# CheckHudiTable工具
#### 功能说明
检查Hudi表是否存在异常，依次调用多个子工具对表进行检查并输出结果。
#### 命令格式
```
spark-submit \
--master yarn \
--driver-memory 2G \
--num-executors 3 \
--executor-memory 4G \
--class com.huawei.mrs.hudi.tools.CheckHudiTable \
/opt/hudi-fix-tools-1.0.jar \
${库名.表名} [${分区}]
```
#### 参数说明
| **参数**   | **是否必选** | **参数说明**                                                           |
|:---|:---|:---|
| ${库名.表名} | 是        | 需要检查的Hudi表名，格式为库名.表名                                               |
| ${分区}    | 否        | 逗号分隔的分区路径列表，仅传递给CleanInvalidFiles检查项使用。不输入则CleanInvalidFiles检查所有分区 |
   
#### 检查执行顺序
1. **FixHoodieMetaFile.check()** --- 元数据文件检查
2. 如果FixHoodieMetaFile发现错误（hoodie.properties或hoodie.index.properties缺失），**提前返回**，不再执行后续检查
3. **CleanInvalidFiles.check()** --- 无效文件检查（使用分区参数）
4. **CleanDuplicativeSchema.check()** --- 重复schema检查
5. **FixHiveMetadata.check()** --- Hive元数据检查
6. **CheckWriteSchema.check()** --- 写入schema检查
 
#### 输出结果说明
- **正常流程** （所有检查均执行完毕），每项检查独立输出：
  ```
  FixHoodieMetaFile RESULT:
  success
  FixHoodieMetaFile MESSAGE:
  No problems found.
  CleanInvalidFiles RESULT:
  success
  CleanInvalidFiles MESSAGE:
  ...
  ...
  ```
  
- **提前返回** （FixHoodieMetaFile发现错误时），仅输出错误信息：
  ```
  RESULT:
  success
  MESSAGE:
  ERROR: The hoodie.properties file does not exist.
  ```
  
各子工具的MESSAGE含义参见对应工具的说明。No problems found.表示对应工具未发现表异常，其他信息可以使用对应工具单独进行检查、修改。
#### 使用样例
- 对表进行全量检查：
  ```
  spark-submit --master yarn --driver-memory 2G --num-executors 3 --executor-memory 4G \
  --class com.huawei.mrs.hudi.tools.CheckHudiTable \
  /opt/hudi-fix-tools-1.0.jar \
  mydb.mytable
  ```
  
- 指定分区检查（分区参数仅影响CleanInvalidFiles检查项）：
  ```
  spark-submit --master yarn --driver-memory 2G --num-executors 3 --executor-memory 4G \
  --class com.huawei.mrs.hudi.tools.CheckHudiTable \
  /opt/hudi-fix-tools-1.0.jar \
  mydb.mytable "region=east/city=sh,region=east/city=bj"
  ```
  
 
