在hive中,可以使用json_tuple函數(shù)獲取json中的key值。json_tuple函數(shù)的語法如下:
json_tuple(json_string, key1, key2, ...)
其中,json_string是要解析的json字符串,key1、key2、...是所要獲取其值的key名。
下面是一個例子:
create table json_table(user_id string, info string); insert into json_table values ('0001', '{"name": "Tom", "age": 25, "address": {"city": "Beijing", "district": "Haidian"}}');
表json_table中有兩列,user_id和info。其中,info列中存儲了一個json字符串。
要獲取info中name、age和address.city的值,可以使用如下語句:
select user_id, json_tuple(info, 'name', 'age', 'address.city') from json_table;
運行結果如下:
+--------+--------------+----------------+ |user_id | _c0 | _c1 | +--------+--------------+----------------+ | 0001 | Tom | 25 | +--------+--------------+----------------+
可以看到,json_tuple函數(shù)返回的是一個數(shù)組,數(shù)組的元素對應要獲取的key的值。在上例中,_c0表示name的值,_c1表示age的值,_c2表示address.city的值。