我正在尝试创建一个表,我将加载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.jar3-我尝试创建一个表
CREATE EXTERNAL TABLE events (..XYZ..)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( "ignore.malformed.json" = "true") STORED AS TEXTFILE这里XYZ是正确的,因为如果我删除SERDEPROPERTIES ( "ignore.malformed.json“= "true")”部件的行格式SERDE 'org.openx.data.jsonserde.JsonSerDe‘“,就会创建该表。
和我收到了一个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.,我的蜂巢版本是0.13.1,我发现这个版本的 http://hortonworks.com/community/forums/topic/json-serde-not-working-in-hive-0-13-0/有问题,但是我从repository..so下载了最后一个版本,它应该被修复.
我还应该检查什么?我的方法正确吗?
谢谢!
发布于 2014-12-10 16:14:42
我设法通过从code.google.com/p/hive-json-serde/wiki/GettingStarted获取serde库的版本2来解决这个问题。
发布于 2015-05-07 14:35:54
在这个视频中,我已经解释了如何处理Hive中的json数据。我认为您没有在hive/lib文件夹中添加json数据罐。您可以从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
https://stackoverflow.com/questions/27402195
复制相似问题