Apache druid 删除数据流程 0.13

背景

由于前端时间数据导入出现问题,导致druid 中的数据需要重新导入,但又要防止数据重复,需要把数据彻底清理。

问题

由于druid 属于时间序列数据库,删除的时候只能时间范围删除

删除流程

根据时间范围查询segements 标识(在coordinator节点查询)

查询例子:查找 datasource 为uservalid_1d,时间范围是 2019-09-29至2019-10-08 间的范围数据,返回值为数组。

查看segements 信息

通过segements详情,可以看出interval,唯一标示,当前在哪个节点上存储。

标记segments 为 unused(unused 不是删除,而是加载对应的segements)(0.13版本)

上面实例就是 把数据库uservalid_1d,中的uservalid_1d_2019-10-06T00:00:00.000Z_2019-10-07T00:00:00.000Z_2019-10-08T07:10:17.073Z_1标记为unused 。

标记unused ?

在元数据存储中,表名:druid_segments,字段属性:dataSource 值:uservalid_1d 属性:used 设置为 ‘0’,在coordinator节点,分配segements时,used 为 ‘0',segements不进行加载。

查看系统中未加载的segments sql语句

SELECT * FROM `druid_segments` WHERE dataSource = 'uservalid_1d' AND used = '0'

清理深度存储数据。提交Kill 任务

只有标记为unused segements才能被清理掉。

验证

查看hdfs中是否还存在对应的 目录 hadoop -fs -ls /druid/segements/uservalid_1d

总结

druid 彻底清理数据时,分为三步,查询删除的segements,标记为unused,清理元数据及深度存储数据。

以上删除方式,适用于0.13版本,其他版本,未进行过测试。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191009A0ATIA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券