hive查询报java.lang.ArrayIndexOutOfBounds

hive版本:1.1

文件存储格式:orc

问题产生:表导入时多次尝试,最终成功。在查询此表 进行单表sum操作时,报java.lang.ArrayIndexOutOfBounds这个问题。

以下两种办法都可解决遇到的问题:

1、参考网上问题处理经验:禁用hive矢量执行,网上出现此错误是多表关联的时候出错,或者增加字段造成。增加以下参数,问题也得到了解决:

问题根源在于数据的序列化和反序列化之间的不匹配列由SelectOperator的Column Pruning ColumnPrunerSelectProc引起,

set hive.vectorized.execution.enabled=false;

set hive.vectorized.execution.reduce.enabled=false;

set hive.vectorized.execution.reduce.groupby.enabled=false;

参考:https://www.freesion.com/article/9667879275/

https://blog.csdn.net/weixin_38822045/article/details/88050203

2、 表删除分区,重建,重新导入数据,直接查询即可。

因此怀疑是在构建表的时候,由于研发的操作,造成元数据未更新造成查询问题。 

网上解释如下:

1、这个表中途修改过字段信息,造成旧分区的信息和新分区的信息不一致。

2、CDH5 中 hive1.1 版本,当修改表格的元数据信息后,使用ORC格式的文件与Hive的矢量化特性不兼容 ,需要先设置矢量化为false

set hive.vectorized.execution.enabled=false;

set hive.vectorized.execution.reduce.enabled=false;

参考:https://blog.csdn.net/qq_30868737/article/details/111310050

你可能感兴趣的:(hive查询报java.lang.ArrayIndexOutOfBounds)