hadoop - Oozie中的配置单元 Action 间歇性失败-CDH 5.1-Oozie 4.0.0

标签 hadoop hive oozie yarn cloudera-cdh

我们有一个oozie工作流程,其中包含简单的“create”和“alter”语句,以及在Hive Action中使用“RCFILE”文件格式的“create”语句。

我们面临的挑战是,此Hive Action 有时会成功执行,有时却会失败...我们无法解决此问题。

它抛出有关“serde”的“NoSuchMethodError”异常。

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.HiveMain], main() threw exception, org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory.getPrimitiveTypeInfo(Ljava/lang/String;)Lorg/apache/hadoop/hive/serde2/typeinfo/TypeInfo;
java.lang.NoSuchMethodError: org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory.getPrimitiveTypeInfo(Ljava/lang/String;)Lorg/apache/hadoop/hive/serde2/typeinfo/TypeInfo;
    at org.apache.hadoop.hive.ql.exec.FunctionRegistry.registerNumericType(FunctionRegistry.java:630)
    at org.apache.hadoop.hive.ql.exec.FunctionRegistry.<clinit>(FunctionRegistry.java:636)
    at org.apache.hadoop.hive.ql.session.SessionState.<init>(SessionState.java:208)
    at org.apache.hadoop.hive.cli.CliSessionState.<init>(CliSessionState.java:78)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:645)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:623)
    at org.apache.oozie.action.hadoop.HiveMain.runHive(HiveMain.java:318)
    at org.apache.oozie.action.hadoop.HiveMain.run(HiveMain.java:279)
    at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:38)
    at org.apache.oozie.action.hadoop.HiveMain.main(HiveMain.java:66)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:226)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:430)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1554)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)

有人可以帮我解决这个问题吗?

最佳答案

我有同样的问题。这是在不同的上下文中,但我确定根本问题是相同的。 org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory.getPrimitiveTypeInfo(String)方法的返回类型缩小为Hive 0.13中的PrimitiveTypeInfoprior versions of Hive中的TypeInfo,这破坏了Java二进制兼容性。

看来org.apache.hadoop.hive.ql.exec.FunctionRegistry是使用hive-serde-x.x.x.jar的0.13之前的版本编译的,但是执行类路径包含了更新的hive-serde-0.13.x.jar的版本。

解决方案是确保hive-serde-n.n.jar和hive-exec-n.n.jar(或您的情况下来自org.apache.hadoop.hive.ql.exec.FunctionRegistry的位置)在类路径上具有一致的版本。

关于hadoop - Oozie中的配置单元 Action 间歇性失败-CDH 5.1-Oozie 4.0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26118105/

相关文章:

hadoop - 如何将Hadoop文件系统保存在hadoop安装盘以外的物理盘中?

hadoop - 在旧数据集上启动oozie协调器

java - 嵌入式Pig无法访问hadoop

hadoop - 当我执行 distcp 时,映射器是否会在源或目标中运行

mysql - Hive Metastore 未创建 MYSQL 或 Derby 连接

hadoop - Oozie shell 操作 - 运行 sqoop 命令并需要日志记录详细信息

hadoop - java.io.IOException : Not a data file 异常

hadoop - Apache hive : How to Add Column at Specific Location in Table

sql-server - Oozie Sqoop 作业

hadoop - 如何在运行HBase作业时通过oozie设置HADOOP_CLASSPATH