阅读量:0
Automatic Hudi Cleaning操作说明
(图片来源网络,侵删)自动Hudi清理是Apache Hudi的一个功能,用于自动删除旧的、不再需要的数据集版本,这种清理基于配置的策略,可以定期或在数据写入时执行。
1. 配置Hudi清理策略
要配置Hudi清理策略,您需要在Hudi表的Spark SQL创建语句中指定HudiTableSink
选项,以下是一个示例:
CREATE TABLE hudi_table ( ... ) USING org.apache.hudi.spark.HoodieSparkSqlQueryableDataSource OPTIONS ( 'hoodie.data.publisher'='org.apache.hudi.spark.datasource.write.DataWriterFactory', 'hoodie.cleaner.commits.retained.time'='1d', 'hoodie.cleaner.min.commits'='5', 'hoodie.cleaner.enable'='true', 'hoodie.cleaner.schedule'='10 mins', 'hoodie.cleaner.policy'='COMPACTION' );
在这个例子中,我们配置了以下策略:
hoodie.cleaner.commits.retained.time
: 保留最近1天的所有提交(即不会删除这些提交)。
hoodie.cleaner.min.commits
: 至少保留5个提交,即使它们的时间戳比hoodie.cleaner.commits.retained.time
更老。
hoodie.cleaner.enable
: 启用自动清理。
hoodie.cleaner.schedule
: 每10分钟进行一次清理。
hoodie.cleaner.policy
: 使用COMPACTION策略进行清理。
2. 启动Hudi清理
一旦配置了清理策略,Hudi将在后台自动执行清理任务,如果您想手动触发清理,可以使用以下命令:
CALL system.hudi_clean('hudi_table');
这将立即执行清理操作,而不是等待下一个计划的清理周期。
3. 监控和调试Hudi清理
要监控和调试Hudi清理,您可以查看Hudi表的提交历史和清理历史,以下是一些有用的查询:
查看所有提交:
SELECT * FROM hudi_table.hoodie_commits;
查看所有清理:
SELECT * FROM hudi_table.hoodie_cleans;
查看当前保留的提交:
SELECT * FROM hudi_table.hoodie_retained_commits;
通过这些查询,您可以了解Hudi清理是否按预期工作,以及是否需要调整清理策略。