Serde问题与Hive 0.12和Hadoop 2.2.0-cdh5.0.0-beta2有关

时间:2014-03-11 11:16:44

标签: hadoop hive cloudera

标题有点奇怪,因为我在解决问题方面遇到了困难。我在Hadoop 2.0.0-cdh4.4.0和hive 0.10上使用我的解决方案没有问题。

首先尝试:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop.hive.serde2.objectinspector.primitive.AbstractPrimitiveJavaObjectInspector.<init>(Lorg/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils$PrimitiveTypeEntry;)V

第二次尝试:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Could not initialize class org.openx.data.jsonserde.objectinspector.JsonObjectInspectorFactory
  • 我可以使用此SerDe创建一个表:https://github.com/cloudera/cdh-twitter-example

  • 我创建了一个带有来自flume的推文的外部表。我不能做&#34; SELECT * FROM tweets;&#34;

    FAILED:RuntimeException org.apache.hadoop.hive.ql.metadata.HiveException:异常java.lang.ClassNotFoundException失败:com.cloudera.hive.serde.JSONSerDejava.lang.RuntimeException:java.lang.ClassNotFoundException:com .cloudera.hive.serde.JSONSerDe

  • 我可以做SELECT id,text FROM tweets;

  • 我可以做一个SELECT COUNT(*)FROM tweets;
  • 我无法加入此表:

    执行日志:/tmp/jochen.debie/jochen.debie_20140311121313_164611a9-b0d8-4e53-9bda-f9f7ac342aaf.log 2014-03-11 12:13:30开始启动本地任务来处理地图加入;最大记忆= 257294336 退出状态执行失败:2 获取错误信息

    任务失败! 任务ID:   阶段-5

提到了执行日志:

2014-03-11 12:13:30,331 ERROR mr.MapredLocalTask (MapredLocalTask.java:executeFromChildJVM(324)) - Hive Runtime Error: Map local work failed
org.apache.hadoop.hive.ql.metadata.HiveException: Failed with exception java.lang.ClassNotFoundException: com.cloudera.hive.serde.JSONSerDejava.lang.RuntimeException: java.lang.ClassNotFoundException: com.cloudera.hive.serde.JSONSerDe

有谁知道如何解决这个问题,或者至少告诉我问题出在哪里?

编辑:我在Hadoop 2.0.0-cdh4.4.0和hive 0.10上构建serde会不会有问题?

1 个答案:

答案 0 :(得分:5)

据我所见,Hive-.11 +在加入自定义SerDe时遇到错误。

https://github.com/Esri/gis-tools-for-hadoop/issues/9

您可以尝试将包含SerDe类的JAR文件复制到$ HIVE_HOME / lib。

(我在你的问题中看到你在连接和其他情况下都得到了ClassNotFoundException;到目前为止,我遇到的这些都是加入的。)

[编辑]另一种解决方法是使用HADOOP_CLASSPATH:

env HADOOP_CLASSPATH=some.jar:other.jar hive ...

[编辑]解决方法适用于Hive版本0.11和0.12;然后0.13及以上包含HIVE-6670的修正。