Hudi常见问题
更新时间 2026-10-12 11:42:28
最近更新时间: 2026-10-12 11:42:28
本章节介绍Hudi服务常见问题。
表类型建好后能否更改
不能。hoodie.datasource.write.table.type 建表后不可更改,COW 与 MOR 的文件组织方式不同,需新建表迁移数据。
写入报主键相关错误
原因:未指定recordkey.field,或主键字段存在空值。
处理:建表时显式指定primaryKey;写入数据前校验主键字段非空。
INSERT 报类型转换异常(storeAssignmentPolicy)
原因:Spark 3.0 起 storeAssignmentPolicy 默认 ANSI 策略,不对非同类型数据进行强制转换(如 string 转 timestamp),插入的数据类型与表结构不一致时报错。
处理:执行set spark.sql.storeAssignmentPolicy=LEGACY; 切回宽松的隐式转换策略后重试;或修正插入数据的类型。
MOR 表快照查询变慢
原因:日志文件未及时压缩,读时合并代价增大。
处理:检查.hoodie/timeline 中最近一次 compaction 时间,手动触发 CALL run_compaction;或评估将 hoodie.compact.inline.max.delta.commits 调小。
小文件过多
原因:写入并行度高于数据量所需,或频繁小批量写入。
处理:显式设置写并行度为输入数据量/120MB;合并小批次写入;定期执行 Clustering。
增量查询拉不到数据
原因:begin.instanttime 晚于最新提交;或该时刻之后无新写入。
处理:通过hdfs dfs -ls <表>/.hoodie/timeline 查看提交时刻,确保 begin 值早于目标提交。
时间线上存在.inflight 文件,写入被阻塞
原因:上次作业异常退出,提交未完成也未回滚。
处理:执行CALL rollback_to_instant 回滚该未完成提交后恢复写入。