Hive处理Json相关数据

get_json_object 函数

此函数为常用函数,可以取出json数据中的相应的字段的数值

-- get_json_object(json,'$.name') as name
select get_json_object('{"name":"zj","age":25}','$.name') as name ,get_json_object('{"name":"zj","age":25}','$.age') as age;

select get_json_object('{"name":"zj","age":25,"add":{"provinces":"河南","city":"周口"}}','$.add.city');

json_tuple 函数

select json_tuple('{"name":"zj","age":25}','name','age') ;

select b.c0 as name,b.c1 as age from (select json_tuple('{"name":"zj","age":25}','name','age'))b ;

Json 数组

-- 相当于UDTF “一进多出”
SELECT explode(split(regexp_replace(regexp_replace('[{"website":"baidu.com","name":"百度"},{"website":"google.com","name":"谷歌"}]', '\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{'),'\\;'));
-- 说明:  
--     第一次替换:将'['或者']'替换为''
-- 	   第二次替换:将'},{' 替换为'};{'
--     切割:按照';'进行切割

此方式也可以采用编写UDTF来实现,具体步骤可以查看Hive UDF GDF UDTF编写与实现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值