flink写入orc文件到hive表,hive表读取报数组越界_hive java.lang.arrayindexoutofboundsexception: 7-程序员宅基地

技术标签: hive  flink  大数据(hadoop)  hadoop  

组件版本:

flink1.13.2

cdh6.3.2

hive2.1.1

问题描述:

flink实时读取日志数据写入hdfs中,保存为orc格式文件。

flink写入文件格式:

hive表建表语句:

hive表查询时报:

org.apache.hive.service.cli.HiveSQLException: 
java.io.IOException: java.lang.ArrayIndexOutOfBoundsException: 7

查看yarn日志:

Caused by: java.lang.ArrayIndexOutOfBoundsException: 7
	at org.apache.orc.OrcFile$WriterVersion.from(OrcFile.java:145)
	at org.apache.orc.impl.OrcTail.getWriterVersion(OrcTail.java:74)
	at org.apache.orc.impl.ReaderImpl.<init>(ReaderImpl.java:385)
	at org.apache.hadoop.hive.ql.io.orc.ReaderImpl.<init>(ReaderImpl.java:62)
	at org.apache.hadoop.hive.ql.io.orc.OrcFile.createReader(OrcFile.java:89)
	at org.apache.hadoop.hive.ql.io.orc.VectorizedOrcInputFormat.getRecordReader(VectorizedOrcInputFormat.java:186)
	at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat.createVectorizedReader(OrcInputFormat.java:1672)
	at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat.getRecordReader(OrcInputFormat.java:1683)
	at org.apache.hadoop.hive.ql.io.CombineHiveRecordReader.<init>(CombineHiveRecordReader.java:68)
	... 16 more

网上查找原因告知:需要调整源码 

[HIVE-14483] java.lang.ArrayIndexOutOfBoundsException org.apache.orc.impl.TreeReaderFactory$BytesColumnVectorUtil.commonReadByteArrays - ASF JIRA

源码切换到2.1.1的分支 : git checkout rel/release-2.1.1

org.apache.orc.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包替换集群包。

注意:

cdh没有给出hive的源码,针对cdh中的hive包直接重新打包apache hive源码替换会出现无法连接hive的问题,hiveserver2也会在启动后几分钟内告警。

解决方法:

编译apache hive源码,并下载cdh中hive-exec.jar hive-orc.jar 比对

cdh实际包路径:/opt/cloudera/parcels/CDH/jars   

/opt/cloudera/parcels/CDH/lib/hive/lib 目录中都是软连接关联到/opt/cloudera/parcels/CDH/jars 

org.apache.orc.OrcFile$WriterVersion.class发现两者并无差异。故只替换该类即可。

 替换包命令:

jar uvf hive-exec-2.1.1-cdh6.3.2.jar org/apache/orc/OrcFile\$WriterVersion.class org/apache/orc/OrcFile\$WriterVersion.class

jar uvf hive-orc-2.1.1-cdh6.3.2.jar org/apache/orc/OrcFile\$WriterVersion.class org/apache/orc/OrcFile\$WriterVersion.class

重新上传到 /opt/cloudera/parcels/CDH/jars  中,重启hive验证即可。

注意:替换的包在cdh的每个节点都要上传。

自取包

已经打包好的替换包:cdh-hive2.1.1版本orc格式表读取包数组越界替换包-Hive文档类资源-CSDN下载

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weinierzui/article/details/124837928

智能推荐

js代码实现tab选项卡效果_js tab选中-程序员宅基地

文章浏览阅读631次。实现tab选项卡效果贴上代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <me..._js tab选中

github上拉去代码执行 npm install报错code:128_error: command failed: d:\program files\git\cmd\gi-程序员宅基地

文章浏览阅读1.9k次。npm ERR! code 128npm ERR! Command failed: D:\Program Files\Git\cmd\git.EXE clone --mirror -q git://github.com/adobe-webplatform/eve.git C:\Users\yantx\AppData\Roaming\npm-cache\_cacache\tmp\git-clon..._error: command failed: d:\program files\git\cmd\git.exe -c core.longpaths=tr

路由选择协议笔记ripv1、ripv2、ripng-程序员宅基地

文章浏览阅读533次。一、基本的rip配置 router rip network+直连主网络这里是ripv1,它是又累的路由协议,子网屏蔽,只通过主网二、被动借口的配置 router rip passive-interface ethernet0passive-interface命令可以喝所有的ip路由协议中配置使用,配置了passive-interface的借口不发送路由更新信息,只侦听rip广..._ip rip send version 1 2含义

oracle dbm备份恢复,ORACLE 11g 用Duplicate恢复Data Guard 备库详细过程-程序员宅基地

文章浏览阅读310次。1、先查找备库控制文件路径先在备库上找出控制文件的路径,通过和主库一样,不过为了以防万一,还是check为好。sql> select name from v$controlfile;NAME--------------------------------------------------------------------------------/oracle/app/oracle/ora..._ora.dbm01.db

Python——字符串2.0(实验)(python programming)-程序员宅基地

文章浏览阅读241次。Python——字符串2.0(实验)(python programming) 直接打s,是程序员看到的;打print(),是用户看到的列表]#列表索引,与数组唯一不同:等号左端可修改转载自:https://www.cnblogs.com/wwwwwei/p/10481653.html..._python程序设计实验字符串

html+css+jQuery写的选择题答题页面_html制作答题网页-程序员宅基地

文章浏览阅读1.5k次。主要是一个选择题和多选题的答题功能使用html+css+js_html制作答题网页

随便推点

VB.net学习笔记(二十七)线程同步上_vbnet同步-程序员宅基地

文章浏览阅读9.2k次。X夫妇二人试图同时从同一账户(总额1000)中支取1000。由于余额有1000,夫妇各自都满足条件,于是银行共支付2000。结果是银行亏了1000元。这种两个或更多线程试图在同一时刻访问同一资源来修改其状态,并产生不良后果的情况被称做竞争条件。 为避免竞争条件,需要使Withdraw()方法具有线_vbnet同步

Unity中减少VR晕眩症的实用技术(Yanlz+Unity+XR+VR+AR+MR+SteamVR+晕眩症+征兆冲突理论+视野+帧速+相对运动错觉+光场VR+立钻哥哥+==)_unity 开发vr很头晕-程序员宅基地

文章浏览阅读4k次,点赞10次,收藏10次。《基于Unity与SteamVR构建虚拟世界》 《基于Unity与SteamVR构建虚拟世界》 版本 作者 参与者 完成日期 备注 SteamVR_Unity_V01_1.0 严立钻 2019..._unity 开发vr很头晕

echarts折线图改变symbol颜色,让圆球颜色和折线相同_echarts symbol颜色-程序员宅基地

文章浏览阅读6.5k次。title: { text: '', left: 'center' }, xAxis: { type: 'category', }, yAxis: { type: 'value' }, series: [{ type: 'line', // 接下来三句是重点,将默认形状改为圆形 symbol: 'circle', symbol..._echarts symbol颜色

Coursera 申请助学金流程和材料_coursera 助学金-程序员宅基地

Coursera是一个非常受欢迎的在线学习平台,本文介绍了在Coursera申请助学金的流程和所需材料。通过选择感兴趣的课程并提交申请,等待15天后会得到申请结果。完成课程后可以获得正式的结课证书。同时,对于可以七天试用的课程,试用期内完成的证书可以免费下载。

Spring Boot 日志配置_springboot指定日志配置文件-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏10次。引用步骤(1)编写配置文件在src/main/resources下面添加logback.xml,内容如下:<?xml version="1.0" encoding="UTF-8"?><configuration> <!--======================================= 本地变量 ======================================== --> <!--在没有定义${LOG_.._springboot指定日志配置文件

linux gcc 查看版本号,如何查看Linux或者gcc版本-程序员宅基地

文章浏览阅读1.8w次,点赞3次,收藏6次。匿名用户1级2016-12-29 回答1. 查看Linux版本cat/etc/issueLinaro 12.07 \n \l2. 查看内核版本1)cat/proc/versionLinux version 2.6.38-13-generic(buildd@rothera) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)) #57-Ubuntu S..._gcc version

推荐文章

热门文章

相关标签