hive find_in_set,get_json_object,lateral view explode函式
阿新 • • 發佈:2019-02-17
今天寫幾個hive函式, find_in_set,get_json_object,lateral view explode,方便以後查詢話不多說開幹。
find_in_set函式說兩點
1.使用方法
SELECT FIND_IN_SET('b','a,b,c,d');
-> 2
SELECT FIND_IN_SET('e','a,b,c,d');
-> 0
2.建議可以使用關聯的不要使用find_in_set(),效率上很差。
get_json_object
應用場景:使用Hive對日誌資訊進行查詢分解,log裡面記錄的是json形式的資料:
request_uri_dmalog_show_post_id --》{"id":"3227823","type":"guanzhu","ca_kw":18,"pn":1}
select request_uri_dmalog_atype, get_json_object(request_uri_dmalog_show_post_id,'$.pn')
from ods.ods_rtm_app_ev where request_uri_dmalog_atype='show' limit 9 --json key取值
多層json處理
https://blog.csdn.net/qq_31573519/article/details/55104822
lateral view explode
使用
資料樣式
1d66fa6eeaba3abdc57ae9cd5909eabb [26,87,27,39,32,56,50,69,29,46,59,63,60,28,62,72,36]
SELECT uuid,tagid tag_id FROM ods.ods_remymartin_data_rtm_unlogin_user_follow_tag lateral view explode(split(substring(tag_id,2,length(tag_id)-2),',')) adtable AS tagid --一行轉多列
結果
1d66fa6eeaba3abdc57ae9cd5909eabb 26 1d66fa6eeaba3abdc57ae9cd5909eabb 87 1d66fa6eeaba3abdc57ae9cd5909eabb 27 1d66fa6eeaba3abdc57ae9cd5909eabb 39 1d66fa6eeaba3abdc57ae9cd5909eabb 32 1d66fa6eeaba3abdc57ae9cd5909eabb 56 1d66fa6eeaba3abdc57ae9cd5909eabb 50 1d66fa6eeaba3abdc57ae9cd5909eabb 69 1d66fa6eeaba3abdc57ae9cd5909eabb 29 1d66fa6eeaba3abdc57ae9cd5909eabb 46 1d66fa6eeaba3abdc57ae9cd5909eabb 59 1d66fa6eeaba3abdc57ae9cd5909eabb 63 1d66fa6eeaba3abdc57ae9cd5909eabb 60 1d66fa6eeaba3abdc57ae9cd5909eabb 28 1d66fa6eeaba3abdc57ae9cd5909eabb 62 1d66fa6eeaba3abdc57ae9cd5909eabb 72 1d66fa6eeaba3abdc57ae9cd5909eabb 36