配置数据保留
本教程演示如何在数据源上配置保留规则,以设置要保留或丢弃的数据的时间间隔。
在进行本教程之前,我们假设您已经按照单机快速入门中的说明下载了 Apache Druid,并已在本地机器上运行。
加载示例数据
在本教程中,我们将使用 Wikipedia 编辑样本数据,并使用一个摄入任务规格(spec),该规格将为输入数据中的每个小时创建一个单独的段(segment)。
摄入规格可以在 quickstart/tutorial/retention-index.json 中找到。让我们提交该规格,这将创建一个名为 retention-tutorial 的数据源。
bin/post-index-task --file quickstart/tutorial/retention-index.json --url https://:8081
摄入完成后,在浏览器中访问 https://:8888/unified-console.html#datasources 进入 Web 控制台的数据源视图。
此视图显示了可用的数据源以及每个数据源的保留规则摘要。

目前 retention-tutorial 数据源没有任何规则。请注意,集群有默认规则:在 _default_tier 中永久加载并保留 2 个副本。
这意味着无论时间戳如何,所有数据都将被加载,并且每个段都将被复制到默认层级(tier)的两个 Historical 进程中。
在本教程中,我们暂时忽略层级和冗余的概念。
让我们点击“Fully Available”旁边的“24 Segments”链接,查看 retention-tutorial 数据源的段。
段视图 (https://:8888/unified-console.html#segments) 提供了有关数据源包含哪些段的信息。页面显示共有 24 个段,每个段包含 2015-09-12 特定一小时的数据。

设置保留规则
假设我们想要丢弃 2015-09-12 前 12 小时的数据,并保留 2015-09-12 后 12 小时的数据。
转到 数据源视图,点击 retention-tutorial 数据源中 Cluster default: loadForever 旁边的蓝色铅笔图标。
将出现一个规则配置窗口。

现在点击 + New rule 按钮两次。
在上方规则框中,选择 Load 和 by interval,然后在 by interval 旁边的字段中输入 2015-09-12T12:00:00.000Z/2015-09-13T00:00:00.000Z。副本数(Replicas)在 _default_tier 中可以保持为 2。
在下方规则框中,选择 Drop 和 forever。
规则配置应该如下所示:

现在点击 Next。为了记录更改日志,规则配置过程会要求输入用户名和评论。您可以输入 tutorial 作为两者。
现在点击 Save。您可以在数据源视图中看到新规则。

给集群几分钟时间应用规则更改,然后转到 Web 控制台的 段视图。2015-09-12 前 12 小时的段现在已消失。

生成的保留规则链如下:
-
loadByInterval 2015-09-12T12/2015-09-13 (12小时)
-
dropForever
-
loadForever (默认规则)
规则链是从上到下进行评估的,默认规则链总是被添加到末尾。
我们刚刚创建的教程规则链会在数据位于指定的 12 小时间隔内时加载数据。
如果数据不在该 12 小时间隔内,规则链接下来会评估 dropForever,它将丢弃所有数据。
dropForever 会终止规则链,从而有效地覆盖了默认的 loadForever 规则,该规则在此规则链中将永远不会被触及。
请注意,在本教程中,我们是在特定时间间隔上定义了加载规则。
如果您想根据数据的时效性来保留数据(例如,保留过去 3 个月到当前时间的数据),则应定义一个基于周期的(Period)加载规则。