2017-06-12 36 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