虽然有手动删除segement的方式,但是对于segement很多的比较麻烦,同时disable cube对于数据操作也有一定不确定性,故采用批量删除segement的方式删除数据。
1,首先查询指定cube的所有segement
curl -X GET --user ** -H Content-Type: application/json;charset=utf-8" http://kylin:7070/kylin/api/cubes/test >>text.json
2,遍历符合所需条件segement
with open(fileFullName, "r") as f:
data = json.loads(f.read())
segment = data["segments"]
for x in segment:
timeStamp = x["date_range_end"]
if timeStamp <= endTime:
name = x["name"]
segmentSet.append(name)
f.close()
3,删除遍历出来的segement
curl -X DELETE --user ADMIN:KYLIN -H "Content-Type: application/json;charset=utf-8" 'http://kylin:7070/kylin/api/cubes/test/segs/20211124-20211125'
4,清理数据,需要清理删除segement遗留的文件
清理job数据 ./bin/kylin.sh org.apache.kylin.tool.StorageCleanupJob --delete true
元数据备份清理:
1.元数据备份
./bin/metastore.sh backup
2.元数据清理
./metastore.sh clean
3.执行删除
./bin/metastore.sh clean --delete true