FAQ-Cannot inspect org.apache.hadoop.io.XXX

问题描述/异常栈

org.apache.hadoop.io.XXX

解决方案

可根据查看parquet文件信息验证parquet文件元数据格式与hive表定义元数据进行比对,将修改Hive表定义字段类型即可解决 

查看parquet文件信息方式:  
parquet文件信息查看jar包:<a href="https://note.youdao.com/ynoteshare1/index.html?id=a37d70599085d3f1b36d3f7554269a57&type=note" target="_blank">parquet-tools-1.6.0rc3-SNAPSHOT</a>

查看元数据信息:java -jar ~/Downloads/parquet-tools-1.6.0rc3-SNAPSHOT.jar meta 000063_0  
查看文件数据:java -jar ~/Downloads/parquet-tools-1.6.0rc3-SNAPSHOT.jar schema 000063_0

如核查Hive表元数据与parquet文件元数据不一致,需修改该表的元数据字段类型与parquet保持一致;

检查一下parquet的字段类型时候和hive中的类型一致,如果不一致请调整到一致

调整到一致的方法:

1、修改hive表的字段类型 注意如果需要级联修改需要使用关键字cascade

ALTER TABLE table_name [PARTITION partition_spec] CHANGE [COLUMN] col_old_name col_new_name column_type [CASCADE|RESTRICT];

2、修改生成parquet的字段类型

问题原因

该问题常见于parquet格式hive表查询时,一般原因为hive表对应数据文件元数据对应格式与hive表定义格式不匹配导致

作者:焦巍