hive json数组解析explode,json_tuple

本文介绍了如何在Hive中解析包含JSON数组的字段。通过explode函数将数据拆分为多行,然后使用get_json_object或json_tuple进行逐个字段解析。最后,展示了如何将解析后的多行数据合并成一个字段,以应对大数据量的情况。

每天一点点,记录工作中实操可行
hive json数组解析

hive中有字段A长这个样子,想把其中的name值全部解析出来

[{"itemRateId":"73288842","name":"东北有机大米饭","rating":4,"ratingContent":""},{"itemRateId":"73288850","name":"需要餐具","rating":4,"ratingContent":""},{"itemRateId":"73288834","name":"辣跳冒牛百叶","rating":4,"ratingContent":""},{"itemRateId":"73288826","name":"金汤酸菜鱼套餐(鱼+配菜+小菜+米饭)-现炸酥肉(+10元)","rating":4,"ratingContent":""}]

1: get_json_object 每次只能解析一个字段,但我不知道每个字段A到底有多少个name的键值对,不可能挨个解析,所以。。。。。

select  get_json_object(被解析字段A,"$.[0].name")  column_name 
from table_name

结果,只把第一个name值解析出来了

劲爽金汤酸菜鱼小份(米饭另点)-大份

2:先通过explode把原数据变成n行数据,然后再用get_json_object去解析

select  ss.col
from 
(select 
split(regexp_replace(regexp_extract(被解析字段A,'^\\[(.+)\\]$',1),'\\}\\,\\{', '\\}\\|\\|\\{'),'\\|\\|') as str
from table_name  ) pp
lateral view explode(pp.str) ss as col 

输出结果

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值