我正在尝试创建一个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/ 但是我从存储库中下载了最后一个版本..所以应该修复...
我还应该检查什么?我的方法是否正确?
谢谢!
答案 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.jar和https://code.google.com/p/hive-json-serde/downloads/list
下载这些jar文件请注意json数据和rejex serde过于开销的问题。所以要小心.. 有用的链接:https://www.youtube.com/watch?v=8fqxeGUBLiQ