hive中json格式字段解析及map使用
·
json
如果hive表中有扩展字段,那么扩展字段格式最常见的就是json格式,所以如何解析json字符串相对繁琐(虽然没啥技术😁)
用到的hive功能函数有:get_json_object、explode、split、regexp_replace、regexp_extract
-- json字段样式:[{'a':1, 'b':2}, {'a':3, 'b':4}], 字段名称为json_str
select
col_id,
get_json_object(json_item, '$.a') as new_a, -- 读取json_str中的key为“a”的数据
from table_name
lateral view explode(split(regexp_replace(regexp_extract(json_str, '^\[(.+)\]$', 1), -- 取出“[]”中间内容(regexp_extract)
'}, {', '}¥@¥{'), -- 将“}, {”替换为“'}¥@¥{”(regexp_replace)
'¥@¥')) any_name as json_item -- 按照“¥@¥”分割(split) , 且将分割得到的list拆分成多行(explode)
where conditon='' -- 自定义条件(针对table_name的条件)
map
由以上的描述可以看出,json虽然可以“包罗万象”,但是对于比较简单的key-value场景显着过于复杂。因此如果字段就是很单一的key-value对(这里简单,相较于嵌套的key-value形式),可以直接使用map来解决
-- 可直接定义map
col_name map<string, string>
-- 可将字符串转成map
-- @为两组之间的分隔符 :为key-value对之间的分隔符
str_to_map('key1:value1@key2:value2', '@', ':')
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)