0
我有使用JSON數據的文件,其採取以下形式的JSON數組創建配置單元表「街」: 「AA」, 「城市」: 「BBB」 } { 「街」: 「CCC」, 「城市」: 「DDD」, 「國家」: 「EEE」 } ] }具有不同data_types
上面的Json是一個有效的Json。我想使用JsonSerde在上面的表單的數據之上創建一個配置單元表。
我有使用JSON數據的文件,其採取以下形式的JSON數組創建配置單元表「街」: 「AA」, 「城市」: 「BBB」 } { 「街」: 「CCC」, 「城市」: 「DDD」, 「國家」: 「EEE」 } ] }具有不同data_types
上面的Json是一個有效的Json。我想使用JsonSerde在上面的表單的數據之上創建一個配置單元表。
創建包含所有可能字段的表格。如果現場沒有出現在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
也許,我的問題是誤導。但事實上,我需要創建一個接受不同數據類型數組的表結構。我讀這是不可能的。但是,這需要一個解決方法。 – Cheater
這是什麼意思?示例中的不同數據類型在哪裏?你的意思是例如'string'和'double'?然後使用'string'並在選擇時嘗試轉換爲double。如果不可能投射,cast將返回null – leftjoin