CleanFailedTransactions工具
功能说明
清理Hudi表中失败的(心跳过期的inflight)事务。检测心跳已过期的inflight instant,并清理对应的instant文件、数据文件、心跳文件和.temp临时目录。适用于Hudi正常rollback无法清理的残留失败事务。
约束
- 支持COW和MOR表。
- 工具会跳过非Hudi表和外部表。
- 工具执行时,如有写入操作正在运行,可能将正在进行的写入误判为失败事务。
命令格式
spark-submit \
--master yarn \
--driver-memory 2G \
--num-executors 3 \
--executor-memory 4G \
--class com.huawei.mrs.hudi.tools.CleanFailedTransactions \
/opt/hudi-fix-tools-1.0.jar \
${命令} "${表列表}" 参数说明
| 参数 | 是否必选 | 参数说明 |
|---|---|---|
| ${命令} | 是 |
|
| ${表列表} | 是 | 两种输入方式:
工具优先尝试作为文件路径读取,读取失败则按逗号分隔解析。自动跳过非Hudi表和外部表。 |
Spark配置项
| 配置项 | 默认值 | 说明 |
|---|---|---|
| spark.hudi.force.clean.noSubsequentWrites | false | 是否清理没有后续已完成写入的失败事务。默认只清理有后续已完成写入确认失败的过期事务(保守策略);设为true时,也会清理没有后续已完成写入的过期事务(需确认没有正在进行的写入)。 |
输出结果说明
| 字段 | 说明 |
|---|---|
| RESULT | success表示执行成功,failed表示执行失败 |
| MESSAGE | 检测到的失败事务信息、需要清理的文件列表、执行结果信息或执行失败信息 |
使用样例
- 检查单张表的失败事务:
spark-submit --master yarn --driver-memory 2G --num-executors 3 --executor-memory 4G \ --class com.huawei.mrs.hudi.tools.CleanFailedTransactions \ /opt/hudi-fix-tools-1.0.jar \ check "mydb.mytable"
- 检查多张表的失败事务:
spark-submit --master yarn --driver-memory 2G --num-executors 3 --executor-memory 4G \ --class com.huawei.mrs.hudi.tools.CleanFailedTransactions \ /opt/hudi-fix-tools-1.0.jar \ check "mydb.table1,mydb.table2"
- 从文件读取表列表进行检查:
spark-submit --master yarn --driver-memory 2G --num-executors 3 --executor-memory 4G \ --class com.huawei.mrs.hudi.tools.CleanFailedTransactions \ /opt/hudi-fix-tools-1.0.jar \ check "/tmp/table_list.txt"
- 清理失败事务(自动备份):
spark-submit --master yarn --driver-memory 2G --num-executors 3 --executor-memory 4G \ --class com.huawei.mrs.hudi.tools.CleanFailedTransactions \ /opt/hudi-fix-tools-1.0.jar \ rollback "mydb.mytable"
- 清理没有后续写入的失败事务(需确认无正在进行的写入):
spark-submit --master yarn --driver-memory 2G --num-executors 3 --executor-memory 4G \ --conf spark.hudi.force.clean.noSubsequentWrites=true \ --class com.huawei.mrs.hudi.tools.CleanFailedTransactions \ /opt/hudi-fix-tools-1.0.jar \ rollback "mydb.mytable"
- 恢复备份:
spark-submit --master yarn --driver-memory 2G --num-executors 3 --executor-memory 4G \ --class com.huawei.mrs.hudi.tools.CleanFailedTransactions \ /opt/hudi-fix-tools-1.0.jar \ restore "mydb.mytable"
- 清理备份:
spark-submit --master yarn --driver-memory 2G --num-executors 3 --executor-memory 4G \ --class com.huawei.mrs.hudi.tools.CleanFailedTransactions \ /opt/hudi-fix-tools-1.0.jar \ cleanbackup "mydb.mytable"