【问题标题】:SerDe problems with Hive 0.12 and Hadoop 2.2.0-cdh5.0.0-beta2Hive 0.12 和 Hadoop 2.2.0-cdh5.0.0-beta2 的 SerDe 问题
【发布时间】:2014-04-14 23:15:48
【问题描述】:

标题有点奇怪,因为我很难缩小问题范围。我在 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 的推文创建了一个外部表。我不能做“SELECT * FROM tweets;”

    失败: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(*);
  • 我无法自行加入此表:

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

    任务失败! 任务编号: 第五阶段

提到的执行日志:

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 会不会是个问题?

【问题讨论】:

    标签: hadoop hive cloudera


    【解决方案1】:

    据我所知,Hive-.11+ 与自定义 SerDe 连接存在错误。

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

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

    (我在您的问题中看到您在 join 和其他情况下都遇到了 ClassNotFoundException;到目前为止,我遇到的都是 join。)

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

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

    [编辑] 该变通方法适用于 Hive 版本 0.11 和 0.12;然后 0.13 及更高版本包含HIVE-6670 的修复。

    【讨论】:

    • 感谢您的帮助,将 JAR 文件添加到 /usr/share/cmf/lib/plugins/ 解决了问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    • 2016-04-04
    • 2016-01-16
    相关资源
    最近更新 更多