【问题标题】:JSON to HIVE ingestionJSON 到 HIVE 摄取
【发布时间】: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。得到了同样的结果。

【问题讨论】:

    标签: json mongodb hadoop hive


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-03
      • 2019-10-03
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多