1

我有一个包含 Json 数据的文件,格式如下:

前任:

 {
    "Name": "xxxx",
    "Address": [{
        "Street": "aa",
        "City": "bbb"
    }, {
        "Street": "ccc",
        "City": "ddd",
        "Country": "eee"
    }]
}

上面的 Json 是一个有效的 Json。我想使用 JsonSerde 在上述表单的数据之上创建一个配置单元表。

4

1 回答 1

1

创建定义了所有可能字段的表。如果 json 中不存在字段,则 select 将返回 NULL:

CREATE EXTERNAL TABLE your_table (
Name string,
Address array<struct<Street:string,City:string,Country:string>>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'

如果 JSON 文件中的名称与 Hive 保留字冲突,则在表定义中添加映射和重命名名称:

WITH SERDEPROPERTIES ('mapping.renamed_column'='original_column')并重命名您的表格列。

将您的文件放在表格位置。

另请参阅此处包含一些示例的文档:https ://github.com/rcongiu/Hive-JSON-Serde

于 2017-06-12T20:36:28.133 回答