Hive是一個開源的、基于Hadoop的數據倉庫工具,可以輕松地對于大量的結構化和半結構化數據進行處理和管理。Hive內置json函數,可以輕松地解析和操作JSON數據。
SELECT json_2, json_extract(json_2, '$.name') name
FROM (SELECT '{ "name": "john", "age": 30 }' json_2 FROM table1) t;
以上的SQL語句從table1表中選取一條數據,數據格式為JSON格式。json_extract函數可以提取出數據中的name字段的值,返回結果為john。
with j as (
select '{ "name": "john", "age": 30 }' as json
union all
select '{ "name": "jane", "age": 25 }' as json
)
select
get_json_object(json, '$.name') as name,
get_json_object(json, '$.age') as age
from j;
以上的SQL語句通過with語句構建了一個含有兩條數據的臨時表j,接著使用get_json_object函數分別獲取name和age字段的值,并逐行輸出結果。
Hive內置json函數還包括json_tuple和json_array,分別可以將JSON數據轉化成元組和數組格式。
select t.id, t.name, s.name as subject
from student t
lateral view explode(json_tuple(t.subject, 'math', 'english', 'history')) subjects
as subject, name
以上的SQL語句選取student表中的數據,其中包含一個名為subject的JSON格式字段,該字段里包含有數個學科科目的信息。使用explode函數將每個學科的信息展開成不同的行,并通過json_tuple將每個學科的name和id分別提取出來。
select get_json_object('[1,2,3]', '$[1]') as item
union all
select get_json_object('{"name": "john", "age": 30}', '$.name') as item
以上的SQL語句分別從一個JSON數組和一個JSON對象中提取數據,使用get_json_object函數通過指定JSON路徑的方式獲取指定的數據。
總之,Hive內置的JSON函數為我們在處理非結構化數據時提供了很大的便捷,我們可以通過這些內置函數輕松地對JSON數據進行處理和分析。
上一篇c cgi返回json
下一篇mysql儲存百分比