參考 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}