首页 文章 精选 留言 我的

精选列表

搜索[浏览器兼容性],共10009篇文章
优秀的个人博客,低调大师

hive0.13.1 orc兼容性问题fix

线上使用cdh4.6.0和hive0.13.1,在hive0.11之后开始支持orcfile,hive0.13.1使用的是pb2.5.0,cdh4.6.0是用的2.4.0a,线上测试orcfile,建表正常,但是插入数据时报错报错: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 java.lang.VerifyError: class org.apache.hadoop.hive.ql.io.orc.OrcProto$RowIndexoverrides final methodgetUnknownFields.()Lcom/google/protobuf/UnknownFieldSet; atjava.lang.ClassLoader.defineClass1(NativeMethod) atjava.lang.ClassLoader.defineClass(UnknownSource) atjava.security.SecureClassLoader.defineClass(UnknownSource) atjava.net.URLClassLoader.defineClass(UnknownSource) atjava.net.URLClassLoader.access$ 100 (UnknownSource) atjava.net.URLClassLoader$ 1 .run(UnknownSource) atjava.net.URLClassLoader$ 1 .run(UnknownSource) atjava.security.AccessController.doPrivileged(NativeMethod) atjava.net.URLClassLoader.findClass(UnknownSource) atjava.lang.ClassLoader.loadClass(UnknownSource) atsun.misc.Launcher$AppClassLoader.loadClass(UnknownSource) atjava.lang.ClassLoader.loadClass(UnknownSource) atorg.apache.hadoop.hive.ql.io.orc.WriterImpl.<init>(WriterImpl.java: 129 ) atorg.apache.hadoop.hive.ql.io.orc.OrcFile.createWriter(OrcFile.java: 369 ) atorg.apache.hadoop.hive.ql.io.orc.OrcOutputFormat$OrcRecordWriter.close(OrcOutputFormat.java: 103 ) atorg.apache.hadoop.hive.ql.exec.Utilities.createEmptyFile(Utilities.java: 3065 ) atorg.apache.hadoop.hive.ql.exec.Utilities.createDummyFileForEmptyPartition(Utilities.java: 3089 ) atorg.apache.hadoop.hive.ql.exec.Utilities.getInputPaths(Utilities.java: 3013 ) atorg.apache.hadoop.hive.ql.exec.mr.ExecDriver.execute(ExecDriver.java: 369 ) atorg.apache.hadoop.hive.ql.exec.mr.MapRedTask.execute(MapRedTask.java: 136 ) atorg.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java: 153 ) atorg.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java: 85 ) atorg.apache.hadoop.hive.ql.exec.TaskRunner.run(TaskRunner.java: 72 ) 从错误可以看出是由于pb兼容问题导致,尝试使用pb2.4.0a编译hive0.13.1: 1.pom.xml文件: 更改 1 <protobuf.version> 2.5 . 0 </protobuf.version> 为 1 <protobuf.version> 2.4 .0a</protobuf.version> 2.运行mvn进行编译: 1 mvnclean package -DskipTests-Phadoop- 2 -Pdist 发现报如下错误: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [ERROR]/home/caiguangguang/hive_0.13_debug/ql/src/gen/protobuf/gen-java/ org/apache/hadoop/hive/ql/io/orc/OrcProto.java:[ 9828 , 38 ]cannotfindsymbolsymbol : class Parserlocation: package com.google.protobuf[ERROR] /home/caiguangguang/hive_0.13_debug/ql/src/gen/protobuf/gen-java/org/apache/hadoop /hive/ql/io/orc/OrcProto.java:[ 9839 , 31 ]cannotfindsymbolsymbol: class Parserlocation: package com.google.protobuf .... [ERROR]/home/caiguangguang/hive_0.13_debug/ql/src/gen/protobuf/gen-java/ org/apache/hadoop/hive/ql/io/orc/OrcProto.java:[ 169 , 9 ]getUnknownFields() inorg.apache.hadoop.hive.ql.io.orc.OrcProto.IntegerStatisticscannotoverride getUnknownFields()incom.google.protobuf.GeneratedMessage;overriddenmethod is final [ERROR]/home/caiguangguang/hive_0.13_debug/ql/src/gen/protobuf/ gen-java/org/apache/hadoop/hive/ql/io/orc/OrcProto.java:[ 189 , 20 ] cannotfindsymbolsymbol:methodparseUnknownField (com.google.protobuf.CodedInputStream,com.google.protobuf.UnknownFieldSet. Builder,com.google.protobuf.ExtensionRegistryLite, int ) 3.这里 1 hive_0.13_debug/ql/src/gen/protobuf/gen-java/org/apache/hadoop/hive/ql/io/orc/OrcProto.java 是由protoc2.5.0生成的,但是jar包却是2.4.0a的,因此会报错 4.考虑使用2.4.0a的protoc手动生成java代码 1 2 protoc--version libprotoc 2.4 .0a 这里主要涉及两个proto文件: 1 2 3 protocql /src/protobuf/org/apache/hadoop/hive/ql/io/orc/orc_proto .proto--java_out=ql /src/gen/protobuf/gen-java/ protoc. /hcatalog/storage-handlers/hbase/src/protobuf/org/apache/hcatalog/hbase/snapshot/RevisionManagerEndpoint .proto --java_out=hcatalog /storage-handlers/hbase/src/gen-java/ 5.重新编译成功,将hive-exec jar包解压后,可以看到pom.properties中pb的版本已经是2.4.0a了: 1 2 3 4 5 6 META-INF /maven/com .google.protobuf /protobuf-java/pom .properties #GeneratedbyMaven #ThuMar1011:50:31CST2011 version=2.4.0a groupId=com.google.protobuf artifactId=protobuf-java 更换hive-exec jar包之后,测试向orc file的表插入数据也正常。 本文转自菜菜光 51CTO博客,原文链接:http://blog.51cto.com/caiguangguang/1599128,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册