Hive關(guān)于JSON的函數(shù)
Hive是一個(gè)面向大數(shù)據(jù)的數(shù)據(jù)倉(cāng)庫(kù)工具。在Hive中,我們可以使用內(nèi)置的JSON函數(shù)來(lái)處理JSON數(shù)據(jù)。
獲取JSON值
使用get_json_object函數(shù)可以獲取指定JSON對(duì)象路徑的值:
SELECT get_json_object('{"name": "John", "age": 30}', '$.name'); -- 返回 John
我們也可以使用兩個(gè)點(diǎn)號(hào)來(lái)訪問(wèn)嵌套屬性:
SELECT get_json_object('{"person": {"name": "John", "age": 30}}', '$.person.name'); -- 返回 John
提取JSON數(shù)組中的值
使用json_tuple函數(shù)可以從JSON數(shù)組中提取值:
SELECT json_tuple('[{"name": "John", "age": 30}, {"name": "Mary", "age": 25}]', '$[0].name', '$[1].age'); -- 返回 (John,25)
將JSON轉(zhuǎn)換為行
使用json_tuple或get_json_object只能獲取JSON中指定的值。如果我們想將整個(gè)JSON轉(zhuǎn)換為行,我們可以使用json_serde:
CREATE EXTERNAL TABLE example_json ( json_string STRING ) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS TEXTFILE; SELECT * FROM example_json;
表中的每個(gè)行都是一個(gè)JSON對(duì)象。
總結(jié)
在Hive中,我們可以使用內(nèi)置的JSON函數(shù)來(lái)處理JSON數(shù)據(jù)。get_json_object函數(shù)可以獲取指定JSON對(duì)象路徑的值,json_tuple函數(shù)可以從JSON數(shù)組中提取值,而json_serde可以將整個(gè)JSON轉(zhuǎn)換為行。
上一篇html 去冗余代碼
下一篇vue laoder