Apache Druid刪除深度存儲(Deep Storage)中的數據

參考 https://blog.csdn.net/Alongpo/article/details/89604655

Druid安裝及demo測試請參考  https://blog.csdn.net/qq_34864753/article/details/100080664

假如我們只想保留Druid中某張表7天的數據,爲了減少磁盤開銷,刪除前7天的數據

1. 設置表的保留規則  

參考 

https://blog.csdn.net/qq_34864753/article/details/100554508

設置了保留規則後會發現前7天的數據都不顯示在頁面上了,不過前七天的數據仍然保存在深度存儲中,如果是hdfs作爲深度存儲,可以到segments目錄下查看,導入的數據都存在

2. 編寫刪除json文件 delete_druid_data.json    # dataSource爲表名,interval去表表示要刪除21號的interval數據

{
  "type": "kill",
  "dataSource": "user_profile_cc",
  "interval" : "2019-10-20/2019-10-21"
}

執行

curl -X 'POST' -H 'Content-Type:application/json' -d @/home/admin/scripts/delete_druid_data.json http://overload節點ip:8090/druid/indexer/v1/task

再去hdfs下查看,發現表user_profile_cc的25號interval已經從hdfs中刪除了

3. crontab批量定時刪除druid深度存儲數據(前提已經設置過數據保留規則

1. 創建一個txt文件存要刪除的表名  druid_pre_deleted_table_list.txt

2.編寫一個shell腳本   delete_druid_deepstorage_data.sh

#! /bin/bash

readonly SOURCE_FILE="表txt文件目錄"

interval_less=$(date -d "9 days ago" "+%Y-%m-%d")
interval_more=$(date -d "8 days ago" "+%Y-%m-%d")
echo $interval_less
echo $interval_more

while read line 

do
  echo $line

curl -X 'POST' -H 'Content-Type:application/json' -d '{
  "type": "kill",
  "dataSource": "'$line'",
  "interval" : "'$interval_less'/'$interval_more'"
}
' http://overload節點ip:8090/druid/indexer/v1/task

done < ${SOURCE_FILE}

 

注意:如果不設置保留規則,需要先disable segments,否則刪不掉數據,請參考  https://blog.csdn.net/Alongpo/article/details/89604655

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章