我有一个包含json数据的文件,格式如下:前任:
{ "Name": "xxxx", "Address": [{ "Street": "aa", "City": "bbb" }, { "Street": "ccc", "City": "ddd", "Country": "eee" }]}
{
"Name": "xxxx",
"Address": [{
"Street": "aa",
"City": "bbb"
}, {
"Street": "ccc",
"City": "ddd",
"Country": "eee"
}]
}
上面的json是一个有效的json。我想使用jsonserde在上述表单的数据之上创建一个配置单元表。
toe950271#
创建定义了所有可能字段的表。如果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'
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文件中的名称与配置单元保留字冲突,请在表定义中添加Map和重命名名称: WITH SERDEPROPERTIES ('mapping.renamed_column'='original_column') 并重命名表列。将文件放在表位置。另请参见文档中的一些示例:https://github.com/rcongiu/hive-json-serde
WITH SERDEPROPERTIES ('mapping.renamed_column'='original_column')
1条答案
按热度按时间toe950271#
创建定义了所有可能字段的表。如果json中不存在字段,select将返回null:
如果json文件中的名称与配置单元保留字冲突,请在表定义中添加Map和重命名名称:
WITH SERDEPROPERTIES ('mapping.renamed_column'='original_column')
并重命名表列。将文件放在表位置。
另请参见文档中的一些示例:https://github.com/rcongiu/hive-json-serde