Druid入门指南 配置数据保留规则


本教程演示了如何在数据源上配置保留规则。

本教程适用于对想要保留或删除的数据时间间隔进行设置的场景。

1 加载示例数据

本教程使用基于wikipedia的示例数据,数据中包含一个摄取任务规范,该规范每间隔一小时会自动为输入数据创建单独的数据段。

数据摄取规范位于 quickstart/tutorial/retention-index.json,提交这个规范,将创建一个名称为retention-tutorial的数据源。

bin/post-index-task --file quickstart/tutorial/retention-index.json --url http://localhost:8081

摄取完成后,访问Druid控制台中的Datasource视图:在浏览器中输入http://localhost:8888/unified-console.html#datasources

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

Druid删除数据,Druid设置数据规则,Druid保留数据,Druid datasource

当前没有为retention-tutorial数据源设置规则。

注意:集群有默认规则,在_default_tier中会永久加载2个副本。即无论如何设置时间戳都将加载所有数据,并且每个数据段都将复制到两个Historical进程的_default_tier中。

(本教程将暂时忽略分层和冗余概念。)

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

Segment视图提供了一个数据源中所包含的segment信息,每页将展示24个时间段,每个时间段包含了2015-09-12这天中特定小时的数据信息。

Druid删除数据,Druid设置数据规则,Druid保留数据,Druid datasource

2 设置数据保留规则

假设我们想删除2015年9月12日前12个小时的数据,只保留2015年9月12日后12小时的数据,我们可以按以下步骤来进行规则设置。

进入Datasources视图之后点击retention-tutorial数据源的蓝色铅笔的图标Cluster default: loadForever,然后会跳出一个规则配置窗口:

Druid删除数据,Druid设置数据规则,Druid保留数据,Druid datasource

双击+ New rule

跳出的规则框中选择Loadby Interval,然后在by Interval旁边的输入框中输入2015-09-12T12:00:00.000Z/2015-09-13T00:00:00.000Z,Replicants选择2,Tier选择_default_tier

在下边的规则框中,选择Dropforever

规则设置完成之后如下图所示:

Druid删除数据,Druid设置数据规则,Druid保留数据,Druid datasource

点击Next进行下一步。

规则配置过程中会要求用户输入名称以及注释,以便于工作日志的编辑,您可以根据自己需要进行输入。

点击Save进行保存,然后您可以在Datasources视图中看到设定好的新规则:

Druid删除数据,Druid设置数据规则,Druid保留数据,Druid datasource

然后回到Druid控制台中segments视图。

观察发现,2015年9月12日前12小时的数据段现已消失:

Druid删除数据,Druid设置数据规则,Druid保留数据,Druid datasource

生成的保留规则链如下:

  1. loadByInterval 2015-09-12T12/2015-09-13(12 小时)
  2. Drop Forever
  3. loadForever (默认规则)

规则链的执行是自上而下的;默认的规则链则始终置于底部。

我们刚刚创建的教程规则链将会在指定的12小时间隔内加载数据,如果数据不在12小时的间隔内,则规则链下一步将计算dropForever,这将删除任何数据dropForever终止了规则链,有效地覆盖了默认的loadForever规则,在这个规则链中永远不会到达该规则

注意:本教程中,我们定义了一个特定间隔的加载规则。

此外,如果希望根据数据的生命周期保留数据(例如,保留从过去3个月到现在3个月的数据),则应定义一个周期性的加载规则(Period Load Rule)。