Hive是一個(gè)基于Hadoop的數(shù)據(jù)倉庫工具,可以管理和分析大規(guī)模的結(jié)構(gòu)化數(shù)據(jù)。在Hive中,可以通過使用JSON類型來處理JSON格式的源數(shù)據(jù)。
CREATE TABLE json_table (
id INT,
name STRING,
age INT,
address STRUCT,
phone_array ARRAY)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe';
上面的代碼中,我們創(chuàng)建了一個(gè)名為json_table的Hive表,其中包含了id,name,age,address和phone_array這五個(gè)字段,其中address使用了STRUCT類型,phone_array使用了ARRAY類型。
通過使用JsonSerDe來指定數(shù)據(jù)源的格式為JSON,在從Hive中讀取JSON數(shù)據(jù)時(shí),序列化和反序列化就會(huì)自動(dòng)完成。
對于JSON數(shù)組,Hive支持可以使用explode函數(shù)來將其展開:
SELECT id, phone
FROM json_table
LATERAL VIEW EXPLODE(phone_array) exploded_table AS phone;
在上面的查詢中,我們用了LATERAL VIEW將每個(gè)元素展開為一條記錄,然后我們將phone_array中的每個(gè)元素都展開,并重新生成一張表,最終查詢出id和phone字段。
下一篇mysql做約束條件