hive 读取sparksql的orc文件报ArrayIndexOutOfBoundsException:6

报错日志如下

hive 读取sparksql的orc文件报ArrayIndexOutOfBoundsException:6_第1张图片

可以看出报错的地方再OrcFile的WriterVersion的from方法,定位代码发生在下面代码的values[val]代码段。values的值从代码可以看出values的数据应该为5,见下图代码

hive 读取sparksql的orc文件报ArrayIndexOutOfBoundsException:6_第2张图片

hive 读取sparksql的orc文件报ArrayIndexOutOfBoundsException:6_第3张图片

而传过来的val是6,向上看代码,version来源是文件的meta,应该是spark版本的原因导致hive不支持的version。

解决

修改OrcFile文件的WriterVersion的内部类的from方法:

public static WriterVersion from(int val) {
      if (val >= values.length) return FUTURE; // Special handling for the magic value.
      return values[val];
    }

重新打包,并替换hive-exec.jar 和 hive-orc.jar 

 

 

 

 

你可能感兴趣的:(大数据,spark,hadoop,spark,hive,sql)