虽然有手动删除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
如果发现部分数据无法清除,可以参看kylin卡死问题排查之kylin元数据备份修复_jyj019的博客-CSDN博客近期发现部分segement合并新建出现问题,查询错误日志均无异常。想起在手动删除segement表时发现部分表无法删除。最后查询kylin的元数据表,查询备份的表发现部分元数据存在NEW状态表(该表只有目录,未创建hbase表,jobID查询为空,所以无法查询)https://blog.csdn.net/jyj1100/article/details/121522091
|