(一)Druid删除数据

删除一共有两种方式,一种是手动,一种是配置数据的保留规则。
我的安装druid的data角色的节点的hostname为:flume-01
进入 flume-01的节点进行删除,因为有现成的deletion-kill.json,只需要改下日期就好了

进入 flume-01节点的 /data/upload,这个目录中我保存了druid的一些常用的脚本,例如:上传数据(各种格式的上传),查询数据,删除数据等。这个目录可以根据自己机器设置自己的用户
1.手动的删除(一个一个的删segment)
步骤一:查看指定数据库中指定时间段内的segment都有哪些:
例如:

curl -H 'Content-Type:application/json' http://prestoslave01:8081/druid/coordinator/v1/datasources/up_stu_tag/intervals/2019-02-24_2019-02-25
## http://prestoslave01:8081 为druid的active的主节点地址和端口,
## up_stu_tag 为将要删除的druid中的库的名字
## 2019-02-24_2019-02-25 为将要删除数据的日期,
##其他的都是固定的api,不用变,也不用管,druid提供的类似是一个类似于一个web服务,
每种服务都对应一个api,像/druid/coordinator/v1/datasources就是要查询数据库中的信息。其他的类似。
更多的api可以查看如下druid官网的地址
http://druid.io/docs/latest/operations/api-reference.html

这个就是查询"up_stu_tag"数据库下时间是 2019-02-24_2019-02-25中的所有的segment,返回值是:[“up_stu_tag_2019-02-24T00:00:00.000Z_2019-02-25T00:00:00.000Z_2019-02-25T02:47:55.622Z”] ,因为这只有一个segment。
步骤二:把对应的segment标记为 unused(unused不等于删除,只是在druid查询的时候不会加载)

curl -XDELETE http://prestoslave01:8081/druid/coordinator/v1/datasources/deletion-tutorial/segments/up_stu_tag_2019-02-24T00:00:00.000Z_2019-02-25T00:00:00.000Z_2019-02-25T02:47:55.622Z

步骤三:建立一个kill job,把深度存储还有元数据中对应的数据清除
创建 deletion-kill.json,内容如下:

{
  "type": "kill",
  "dataSource": "up_stu_tag",
  "interval" : "2019-02-24/2019-02-25"
}

执行这个任务:

curl -X 'POST' -H 'Content-Type:application/json' -d @/data/upload/deletion-kill.json http://prestoslave01:8090/druid/indexer/v1/task  

在hdfs的目录中可以查看是否删除了原来的数据。hadoop fs -ls /druid/segments/topic的名字

2.定义数据的保留规则:

例如保留7天的数据,进入druid的数据存储界面 (这个规则的定义是把数据从druid的本地磁盘中删除,标记为不可用,而不是真正的删除了,原始的数据还在hdfs中存储着呢,如果想要把原始文件删除,必须调用上边的 deletion-kill.json 文件)
(一)Druid删除数据