本教程演示了如何在数据源上配置保留规则。
本教程适用于对想要保留或删除的数据时间间隔进行设置的场景。
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视图会显示可用数据源以及每个数据源的保留规则摘要。
当前没有为retention-tutorial
数据源设置规则。
注意:集群有默认规则,在_default_tier
中会永久加载2个副本。即无论如何设置时间戳都将加载所有数据,并且每个数据段都将复制到两个Historical进程的_default_tier
中。
(本教程将暂时忽略分层和冗余概念。)
点击“Fully Available”旁的“24 Segments”链接,查看retention-tutorial
数据源的段。
Segment视图提供了一个数据源中所包含的segment信息,每页将展示24个时间段,每个时间段包含了2015-09-12这天中特定小时的数据信息。
2 设置数据保留规则
假设我们想删除2015年9月12日前12个小时的数据,只保留2015年9月12日后12小时的数据,我们可以按以下步骤来进行规则设置。
进入Datasources视图之后点击retention-tutorial
数据源的蓝色铅笔的图标Cluster default: loadForever
,然后会跳出一个规则配置窗口:
双击+ New rule
;
在跳出的规则框中选择Load
和by Interval
,然后在by Interval
旁边的输入框中输入2015-09-12T12:00:00.000Z/2015-09-13T00:00:00.000Z
,Replicants选择2,Tier选择_default_tier
。
在下边的规则框中,选择Drop
和forever
。
规则设置完成之后如下图所示:
点击Next
进行下一步。
规则配置过程中会要求用户输入名称以及注释,以便于工作日志的编辑,您可以根据自己需要进行输入。
点击Save
进行保存,然后您可以在Datasources视图中看到设定好的新规则:
然后回到Druid控制台中segments视图。
观察发现,2015年9月12日前12小时的数据段现已消失:
生成的保留规则链如下:
- loadByInterval 2015-09-12T12/2015-09-13(12 小时)
- Drop Forever
- loadForever (默认规则)
规则链的执行是自上而下的;默认的规则链则始终置于底部。
我们刚刚创建的教程规则链将会在指定的12小时间隔内加载数据,如果数据不在12小时的间隔内,则规则链下一步将计算dropForever
,这将删除任何数据dropForever
终止了规则链,有效地覆盖了默认的loadForever
规则,在这个规则链中永远不会到达该规则
注意:本教程中,我们定义了一个特定间隔的加载规则。
此外,如果希望根据数据的生命周期保留数据(例如,保留从过去3个月到现在3个月的数据),则应定义一个周期性的加载规则(Period Load Rule)。