Oozie中的Hive动作间歇性失败 - CDH 5.1 - Oozie 4.0.0
问题描述:
我们在简单的“create”和“alter”语句中使用oozie工作流,在Hive Action中使用“RCFILE”文件格式创建语句。Oozie中的Hive动作间歇性失败 - CDH 5.1 - Oozie 4.0.0
我们面临的挑战是这个Hive操作有时会成功执行,有时会失败......我们无法解决这个问题。
对“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)
方法的返回类型被缩小为PrimitiveTypeInfo
,Hive 0.13到TypeInfo
,prior versions of Hive,这打破了Java二进制兼容性。
看起来org.apache.hadoop.hive.ql.exec.FunctionRegistry
是用0.13版本的hive-serde-x.x.x.jar编译的,但是执行类路径包含一个来自较新的hive-serde-0.13.x.jar的版本。
解决的办法是确保hive-serde-n.n.n.jar和hive-exec-n.n.n.jar(或者你的案例中的org.apache.hadoop.hive.ql.exec.FunctionRegistry
来自哪里)在类路径上具有一致的版本。
检查您使用的serde jar是否在ozzie sharelib路径中可用 – 2014-10-01 04:41:28