JSON 到 HIVE 摄取
Posted
技术标签:
【中文标题】JSON 到 HIVE 摄取【英文标题】:JSON to HIVE ingestion 【发布时间】:2016-02-23 06:32:08 【问题描述】:将jar /path 添加到/hive-serdes-1.0-SNAPSHOT.jar;
创建外部表学生
( id int, student_id INT, type STRING, score DOUBLE
)
由“com.mongodb.hadoop.hive.MongoStorageHandler”存储
使用 SERDEPROPERTIES ('mongo.columns.mapping'=' "id":"_id", "student_id":"student_id", "type":"type","score":"score" ')
TBLPROPERTIES('mongo.uri'='mongodb://****---****.nam.nsroot.net:*****/admin.student ');
我能够成功运行代码并提取数据。但是“id”字段被填充为 NULL。 我应该更改数据类型吗?我也试过 STRING。得到了同样的结果。
【问题讨论】:
【参考方案1】:根据mongo-hadoop Hive SerDe,ObjectId对应一个特殊的STRUCT实例。
与 ObjectId 对应的 Hive 字段必须是 STRUCT,其中包含字段 oid
、STRING 和 bsontype
、INT,仅此而已。 oid
是 ObjectId 的字符串,而 bsontype
应始终为 be 8。根据您的示例,它应该是:
CREATE EXTERNAL TABLE student
(id STRUCT<oid:STRING, bsontype:INT>, student_id INT, type STRING, score DOUBLE)
输出类似于:
"oid":"56d6e0f6ff1f17f74ebbc16c","bsontype":8
"oid":"56d6e0f8ff1f17f74ebbc16d","bsontype":8
...
以上测试使用:MongoDB v3.2.x、mongo-java-driver-3.2.2.jar、mongo-hadoop-core-1.5.0-rc0.jar、mongo-hadoop-hive-1.5。 0-rc0.jar。
【讨论】:
以上是关于JSON 到 HIVE 摄取的主要内容,如果未能解决你的问题,请参考以下文章
数据摄取问题 hive:java.lang.OutOfMemoryError:无法创建新的本机线程
XML使用Serde hows类没有找到问题,将其提取到Hive表中