跳转到主要内容

配置数据保留

本教程演示如何在数据源上配置保留规则,以设置要保留或丢弃的数据的时间间隔。

在进行本教程之前,我们假设您已经按照单机快速入门中的说明下载了 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 控制台的数据源视图。

此视图显示了可用的数据源以及每个数据源的保留规则摘要。

Summary

目前 retention-tutorial 数据源没有任何规则。请注意,集群有默认规则:在 _default_tier 中永久加载并保留 2 个副本。

这意味着无论时间戳如何,所有数据都将被加载,并且每个段都将被复制到默认层级(tier)的两个 Historical 进程中。

在本教程中,我们暂时忽略层级和冗余的概念。

让我们点击“Fully Available”旁边的“24 Segments”链接,查看 retention-tutorial 数据源的段。

段视图 (https://:8888/unified-console.html#segments) 提供了有关数据源包含哪些段的信息。页面显示共有 24 个段,每个段包含 2015-09-12 特定一小时的数据。

Original segments

设置保留规则

假设我们想要丢弃 2015-09-12 前 12 小时的数据,并保留 2015-09-12 后 12 小时的数据。

转到 数据源视图,点击 retention-tutorial 数据源中 Cluster default: loadForever 旁边的蓝色铅笔图标。

将出现一个规则配置窗口。

Rule configuration

现在点击 + New rule 按钮两次。

在上方规则框中,选择 Loadby interval,然后在 by interval 旁边的字段中输入 2015-09-12T12:00:00.000Z/2015-09-13T00:00:00.000Z。副本数(Replicas)在 _default_tier 中可以保持为 2。

在下方规则框中,选择 Dropforever

规则配置应该如下所示:

Set rules

现在点击 Next。为了记录更改日志,规则配置过程会要求输入用户名和评论。您可以输入 tutorial 作为两者。

现在点击 Save。您可以在数据源视图中看到新规则。

New rules

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

New segments

生成的保留规则链如下:

  1. loadByInterval 2015-09-12T12/2015-09-13 (12小时)

  2. dropForever

  3. loadForever (默认规则)

规则链是从上到下进行评估的,默认规则链总是被添加到末尾。

我们刚刚创建的教程规则链会在数据位于指定的 12 小时间隔内时加载数据。

如果数据不在该 12 小时间隔内,规则链接下来会评估 dropForever,它将丢弃所有数据。

dropForever 会终止规则链,从而有效地覆盖了默认的 loadForever 规则,该规则在此规则链中将永远不会被触及。

请注意,在本教程中,我们是在特定时间间隔上定义了加载规则。

如果您想根据数据的时效性来保留数据(例如,保留过去 3 个月到当前时间的数据),则应定义一个基于周期的(Period)加载规则。

延伸阅读