
# 使用Hive异常文件定位定界工具
#### 操作场景
在Hive数据仓库运维中，由于异常操作（如任务中断、并发写入冲突）或硬件故障（如磁盘损坏、节点宕机）等原因，可能导致Hive存储的数据文件出现损坏或格式异常。异常的数据文件会导致后续查询任务运行失败或返回不正确的数据结果，且问题定位困难。如何快速排查和定位Hive数据文件中的异常？Hive异常文件定位定界工具正是为解决这一问题而设计的。该工具支持对ORC、RCFile、Parquet等常见非文本类数据文件格式进行异常排查，可以查看文件的元信息、数据内容、存储统计等，帮助管理员快速定位异常文件并确定问题范围。
本文介绍如何使用Hive异常文件定位定界工具排查数据文件异常。
#### 约束与限制
- 该章节内容仅适用MRS 3.2.0及之后版本。
- 目前仅支持orc、rc（RCFile）、parquet三种数据文件格式。
 
#### 操作步骤
1. 使用**omm** 用户登录安装了Hive服务的节点，执行以下命令进入Hive安装目录。
   
   ```
   cd ${BIGDATA_HOME}/FusionInsight_HD_*/install/FusionInsight-Hive-*/hive-*/bin
   ```
   
   
2. Hive异常文件定位定界工具使用方式如下： 
   ```
   sh hive_parser_file.sh [--help] <filetype> <command> <input-file|input-directory>
   ```
   相关参数说明如[表1]所示：
   注意：一次只能运行一个命令。
    表1参数说明 
   | 参数              | 描述                                                  | 说明                                                                          |
   |:---|:---|:---|
   | filetype        | 指定当前工具要解析哪种格式的数据文件，目前仅支持orc、rc（RCFile）、parquet三种格式。 | rc格式目前只支持查看数据。                                                              |
   | -c              | 打印当前元信息中列的信息。                                       | 列信息包含类名、类型、序号。                                                              |
   | -d              | 打印数据文件中的数据，可通过"'limit=x'"限制数据量。                     | 数据为当前指定的数据文件内容，通过limit限制数据量时一次只能指定一个数据量大小。                                  |
   | -t              | 打印写入数据的时区。                                          | 打印此文件写入时区。                                                                  |
   | -h              | 使用帮助格式化说明。                                          | 帮助。                                                                         |
   | -m              | 各存储格式的统计信息输出。                                       | 各存储格式不一样，例如orc会打印含strip、块大小等统计信息。                                           |
   | -a              | 完整信息详情打印输出。                                         | 输出完整信息详情，包含以上参数内容。                                                          |
   | input-file      | 输入数据文件。                                             | 指定输入的文件或者输入的目录，输入的目录中如果存在当前格式则解析，如果不存在则跳过。可以指定本地文件或者目录，也可以指定HDFS/OBS文件或者目录。 |
   | input-directory | 输入数据文件所在的目录，子文件多个的情况下使用。                            | 指定输入的文件或者输入的目录，输入的目录中如果存在当前格式则解析，如果不存在则跳过。可以指定本地文件或者目录，也可以指定HDFS/OBS文件或者目录。 |
      
   
   
3. 例如，执行以下命令排查orc文件"hdfs://hacluster/user/hive/warehouse/orc_test"中的异常数据： 
   ```
   sh hive_parser_file.sh orc -d  limit=100 hdfs://hacluster/user/hive/warehouse/orc_test
   ```
   如果不带类似"hdfs://hacluster"的文件存储前缀 ，默认读取本地文件。
   
   
**验证操作：**
工具执行后，观察输出信息：
- 如果文件正常，工具会输出文件的元信息、数据内容或统计信息。
- 如果文件存在异常，工具会输出异常信息，包括异常位置、异常类型等，帮助定位问题文件。
 
#### 使用示例
以下提供几种常见的使用场景示例：
- 查看ORC文件的列信息：
  ```
  sh hive_parser_file.sh orc -c hdfs://hacluster/user/hive/warehouse/test_table/000000_0
  ```
  
- 查看Parquet文件的数据内容（限制10条）：
  ```
  sh hive_parser_file.sh parquet -d limit=10 hdfs://hacluster/user/hive/warehouse/test_table/000000_0
  ```
  
- 查看ORC文件的完整统计信息：
  ```
  sh hive_parser_file.sh orc -m hdfs://hacluster/user/hive/warehouse/test_table/000000_0
  ```
  
- 查看ORC文件的完整详情（包含所有信息）：
  ```
  sh hive_parser_file.sh orc -a hdfs://hacluster/user/hive/warehouse/test_table/000000_0
  ```
  
- 排查本地目录中的所有ORC文件：
  ```
  sh hive_parser_file.sh orc -d limit=100 /local/path/to/data/directory
  ```
  
 
#### 常见问题
- **工具执行报错文件格式不支持**
  当前工具仅支持orc、rc（RCFile）、parquet三种数据文件格式，不支持TextFile、SequenceFile等其他格式。
  请确认数据文件格式为orc、rc或parquet之一。如果文件格式不支持，可以使用其他工具（如hdfs dfs -cat）查看TextFile格式的文件内容。
  
- **排查HDFS文件时报错连接失败**
  排查HDFS文件时连接失败，可能是因为HDFS服务未正常运行、网络不通、或用户权限不足。
  请检查HDFS服务状态，确认网络连通性和用户权限。如果排查本地文件，请确保文件路径正确且有读取权限。
  
 
#### 相关文档
- 了解Hive数据操作，请参考[Hive数据存储及加密配置](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_300253.html)。
- 了解Hive常见问题，请参考[Hive常见问题](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1752.html)。
- 了解Hive各角色日志文件说明，请参考[Hive日志介绍](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_0976.html)。
 
