MapReduce 读取 Hive ORC ArrayIndexOutOfBoundsException: 1024 异常解决

个人博客地址:MapReduce 读取 Hive ORC ArrayIndexOutOfBoundsException: 1024 异常解决 | 一张假钞的真实世界

在MR处理ORC的时候遇到如下异常:

复制代码
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1024
	at org.apache.orc.impl.RunLengthIntegerReaderV2.nextVector    (RunLengthIntegerReaderV2.java:369)
	at org.apache.orc.impl.TreeReaderFactory$BytesColumnVectorUtil.commonReadByteArrays    (TreeReaderFactory.java:1231)
	at org.apache.orc.impl.TreeReaderFactory$BytesColumnVectorUtil.readOrcByteArrays    (TreeReaderFactory.java:1268)
	at org.apache.orc.impl.TreeReaderFactory$StringDirectTreeReader.nextVector    (TreeReaderFactory.java:1368)
	at org.apache.orc.impl.TreeReaderFactory$StringTreeReader.nextVector    (TreeReaderFactory.java:1212)
	at org.apache.orc.impl.TreeReaderFactory$ListTreeReader.nextVector    (TreeReaderFactory.java:1902)
	at org.apache.orc.impl.TreeReaderFactory$StructTreeReader.nextBatch    (TreeReaderFactory.java:1737)
	at org.apache.orc.impl.RecordReaderImpl.nextBatch(RecordReaderImpl.java:1045)
	at org.apache.hadoop.hive.ql.io.orc.RecordReaderImpl.ensureBatch(RecordReaderImpl.java:77)
	at org.apache.hadoop.hive.ql.io.orc.RecordReaderImpl.hasNext(RecordReaderImpl.java:89)

通过搜索发现这个Bug在Hive 2.1.1版本中已经修复。我使用的就是这个版本,检查对应的源代码发现代码是已经按照下面的Patch修复过得:[HIVE-14483 java.lang.ArrayIndexOutOfBoundsException org.apache.orc.impl.TreeReaderFactoryBytesColumnVectorUtil.commonReadByteArrays - ASF JIRA](https://issues.apache.org/jira/browse/HIVE-14483 "[HIVE-14483] java.lang.ArrayIndexOutOfBoundsException org.apache.orc.impl.TreeReaderFactoryBytesColumnVectorUtil.commonReadByteArrays - ASF JIRA")

通过反编译发现我最终打包后的代码中使用的是未修复Bug的代码版本。通过依赖包发现依赖的以下模块中也包含ORC的Jar:

复制代码
<dependency>
    <groupId>org.apache.orc</groupId>
    <artifactId>orc-mapreduce</artifactId>
    <version>1.1.0</version>
</dependency>

解决方法是将orc-mapreduce包升级到1.1.2版本,依赖配置如下:

复制代码
<dependency>
    <groupId>org.apache.orc</groupId>
    <artifactId>orc-mapreduce</artifactId>
    <version>1.1.2</version>
</dependency>
相关推荐
starzy1990几秒前
Flink Task 执行源码深度剖析:从 Task 线程启动到算子链执行的完整链路
大数据·flink
KING-WU51237 分钟前
Git 版本控制器实战指南
大数据·git·elasticsearch
SelectDB技术团队39 分钟前
日志场景 Elasticsearch 替换实操:建表、索引、写入链路与查询改写的完整参数
大数据·数据库·数据仓库·elasticsearch·全文检索·日志分析·apache doris
大大大大晴天️43 分钟前
每天认识一个组件:Spark Catalyst
大数据·spark
百数平台1 小时前
低代码安全技术实践:表单 / 流程 / 报表三级权限体系设计解析
java·大数据·数据库
一楼的猫1 小时前
第十一届中国教育后勤展览会杭州开幕 夏拾光影像为阿里、淘宝闪购提供云相册直播与视频服务 - 夏拾光影像
大数据·人工智能·音视频
程序 代码狂人2 小时前
金融数仓体系与核心业务知识详解
大数据·分布式·spark
shujudang2 小时前
金融行业数据分析平台选型:客户视图、转化诊断与权限管理
大数据·金融·数据挖掘·数据分析
Pin_Qing2 小时前
同一天,谷歌半价卖旗舰,阶跃翻倍收缓存
大数据·开发语言·人工智能·程序人生·缓存
Lalolander2 小时前
灵基Lingee怎么下载安装?Mac 与 Win 详细指南
大数据·人工智能·科技·macos·金蝶灵基