CheckWriteSchema工具
功能说明
检测最新写入数据的schema与Hudi表schema是否一致。从最近一次UPSERT/INSERT写入的数据文件中提取schema,与表定义的schema进行比对。
命令格式
spark-submit \
--master yarn \
--driver-memory 2G \
--num-executors 3 \
--executor-memory 4G \
--class com.huawei.mrs.hudi.tools.CheckWriteSchema \
/opt/hudi-fix-tools-1.0.jar \
${库名.表名} 参数说明
| 参数 | 是否必选 | 参数说明 |
|---|---|---|
| ${库名.表名} | 是 | 需要检查的Hudi表名,格式为库名.表名。 |
输出结果说明
| 字段 | 说明 |
|---|---|
| RESULT | success表示执行成功,failed表示执行失败。 |
| MESSAGE | 检测、执行结果信息或执行失败信息。 |
MESSAGE含义:
| MESSAGE | 级别 | 说明 | 处理建议 |
|---|---|---|---|
| No problems found. | 正常 | 写入schema与最新表schema一致。 | 无需处理。 |
| Write schema is not the same with the latest table schema. | WARN | 表schema发生了变更,入湖作业没有相应的做变更。 | 理论上不影响表的查询,需要修改入湖作业或通过SQL回退表schema变更。 |
| Write schema is not the same with table schema. | ERROR | 入湖作业schema发生了变更且与表schema不一致。 | 已写入的数据大概率会影响表的查询,需要调整入湖作业的schema;如影响可通过ForceRollback回滚。 |
使用样例
- 检查写入schema是否一致:
spark-submit --master yarn --driver-memory 2G --num-executors 3 --executor-memory 4G \ --class com.huawei.mrs.hudi.tools.CheckWriteSchema \ /opt/hudi-fix-tools-1.0.jar \ mydb.mytable
- 忽略optional/nullable差异进行检查:
spark-submit --master yarn --driver-memory 2G --num-executors 3 --executor-memory 4G \ --conf spark.hudi.check.schema.ignore.optional=true \ --class com.huawei.mrs.hudi.tools.CheckWriteSchema \ /opt/hudi-fix-tools-1.0.jar \ mydb.mytable