json SerDe hive 0.13.1

时间:2014-12-10 13:26:00

标签: json hive cloudera

我正在尝试创建一个hive表,我将加载json数据。

这是我做的:

1 - 我下载了项目https://github.com/sheetaldolas/Hive-JSON-Serde/tree/master并将cdh5版本更改为cdh5.2.0(我使用的cloudera版本)

2 - 我在serde项目中添加了jar

.../Hive-JSON-Serde-develop/json-serde/target/json-serde-1.3.1-SNAPSHOT-jar-with-dependencies.jar

3 - 我试图创建一个表

CREATE EXTERNAL TABLE events (..XYZ..)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( "ignore.malformed.json" = "true") STORED AS TEXTFILE

这里XYZ是正确的,因为如果我删除“ROW FORMAT SERDE'org.openx.data.jsonserde.JsonSerDe'with SERDEPROPERTIES(”ignore.malformed.json“=”true“)”part

我收到了一个serde错误:

java.sql.SQLException: Error while processing statement: 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
    at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:277)
    at com.seb.hive.Standard.importStandardEvents(Standard.java:90)
    at com.seb.hive.Standard.main(Standard.java:37)

我检查了/tmp/{user}/hive.log但没有任何内容:

/tmp/cloudera/hive.log 
2014-12-10 02:26:04,535 INFO  [main]: session.SessionState (SessionState.java:start(360)) - No Tez session required at this point. hive.execution.engine=mr.

我的hive版本是0.13.1,我看到这个版本的hive存在问题 http://hortonworks.com/community/forums/topic/json-serde-not-working-in-hive-0-13-0/ 但是我从存储库中下载了最后一个版本..所以应该修复...

我还应该检查什么?我的方法是否正确?

谢谢!

2 个答案:

答案 0 :(得分:0)

我设法通过从code.google.com/p/hive-json-serde/wiki/GettingStarted获取serde库的第2版来解决此问题

答案 1 :(得分:0)

我已经解释了如何在这个视频中处理Hive中的json数据。我想你没有在你的hive / lib文件夹中添加json数据jar。您可以从http://files.cloudera.com/samples/hive-serdes-1.0-SNAPSHOT.jarhttps://code.google.com/p/hive-json-serde/downloads/list

下载这些jar文件

请注意json数据和rejex serde过于开销的问题。所以要小心.. 有用的链接:https://www.youtube.com/watch?v=8fqxeGUBLiQ