2017-06-12 61 views
0

我有使用JSON数据的文件,其采取以下形式的JSON数组创建配置单元表“街”: “AA”, “城市”: “BBB” } { “街”: “CCC”, “城市”: “DDD”, “国家”: “EEE” } ] }具有不同data_types

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

回答

0

创建包含所有可能字段的表格。如果现场没有出现在JSON,选择将返回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文件名与蜂巢冲突的保留字,然后在表定义添加映射和重命名名称:

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

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

参见文档与这里的一些例子:https://github.com/rcongiu/Hive-JSON-Serde

+0

也许,我的问题是误导。但事实上,我需要创建一个接受不同数据类型数组的表结构。我读这是不可能的。但是,这需要一个解决方法。 – Cheater

+0

这是什么意思?示例中的不同数据类型在哪里?你的意思是例如'string'和'double'?然后使用'string'并在选择时尝试转换为double。如果不可能投射,cast将返回null – leftjoin