【问题标题】:mapping JSON object stored in HBase to struct<Array<..>> Hive external table将存储在 HBase 中的 JSON 对象映射到 struct<Array<..>> Hive 外部表
【发布时间】:2018-03-06 09:32:40
【问题描述】:

我有一个包含 JSON 格式列的 hbase 表。所以,我想创建一个包含 struct> 类型的 hive 外部表。

名为 smms 的 Hbase 表:

colum name : nodeid , value : "4545781751" in STRING FORMAT
column name : events in JSON FORMAT 
value :  [{"id":12542, "status" :"true", ..},{"id":"1477", "status":"false", ..}]

Hive 外部表:

Create external table msg (
key INT    
nodeid STRING,
events STRUCT<ARRAY<id:INT, status: STRING>
}
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
 WITH SERDEPROPERTIES ("hbase.columns.mapping" =  ":key,data:nodeid, data:events") TBLPROPERTIES ("hbase.table.name" = "smms");

hive 查询:select * from msg; 返回以下结果:

nodeid : 4545781751 
events : NULL

谢谢

【问题讨论】:

    标签: hive hbase hiveql


    【解决方案1】:

    HBaseStorageHandler (de)serializer 仅支持字符串和二进制字段https://cwiki.apache.org/confluence/display/Hive/HBaseIntegratio

    您在 HBase 中存储的内容实际上是一个字符串(其中确实包含一个 JSON),但您无法将其映射到复杂的 Hive 类型。 解决方案是将事件定义为字符串,并使用 HIVE JSON 反序列化器https://github.com/rcongiu/Hive-JSON-Serde 将数据导出到另一个 HIVE 表

    【讨论】:

      猜你喜欢
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      • 2021-09-04
      相关资源
      最近更新 更多