色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

hive加載list數組里json數據

劉柏宏2年前9瀏覽0評論

Hive作為一種高效的數據倉庫解決方案,可以用于大量數據的存儲和查詢操作。在數據倉庫中,經常會遇到需要將復雜的Json數據進行解析、處理和存儲的問題。本文將介紹如何使用Hive加載list數組里Json數據。

create table if not exists json_table(
id int,
json_arr array) 
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '|'
STORED AS TEXTFILE;

上述代碼中,我們創建了一個名為json_table的表,該表包括id和json_arr兩個字段。其中,json_arr字段是Json數組類型,且每個Json字符串之間以“|”分隔。

insert into json_table values(1, '{
"name": "Tom",
"age": 18,
"address": {
"province": "北京",
"city": "北京市",
"district": "朝陽區"
}
}|{
"name": "Lucy",
"age": 20,
"address": {
"province": "上海",
"city": "上海市",
"district": "浦東新區"
}
}|{
"name": "Jack",
"age": 22,
"address": {
"province": "廣東",
"city": "深圳市",
"district": "南山區"
}
}');

接下來,我們往json_table表里插入了一條數據,包括三個人的信息:名字、年齡和地址。其中,每個人的信息用Json字符串的形式表示,三個人的Json字符串之間以“|”分隔。

select 
id,
get_json_object(ja, '$.name') as name,
cast(get_json_object(ja, '$.age') as int) as age,
get_json_object(ja, '$.address.province') as province,
get_json_object(ja, '$.address.city') as city,
get_json_object(ja, '$.address.district') as district
from 
(
select id, explode(json_arr) as ja from json_table
) t;

最后,我們使用Hive內置的get_json_object函數對Json字符串進行解析,獲取每個人的名字、年齡和地址信息。注意,上述代碼中,我們使用了explode函數將Json數組拆分為多條數據,以便于對每個人的信息進行單獨的處理和解析。