本篇文章给大家谈谈hive解析json字符串,以及hive解析多层json数组对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
解析Hive复杂字段1--lateral view explode
一次比较复杂的从Hive复杂格式字段解析出多个hotelid的过程
1. 所需数据信息在value字段中,value字段是json格式,首先要提取出该字段中的htllist信息
get_json_object(value,'$.htllist')
2. get_json_object的返回值是string格式,具体信息如下
字符串前后有'['和']',每个{}内是单个酒店的凳顷信息,{}之前以','分隔
4.为了之后把每个{}分隔出来,需要先将','分隔符替换成'|'分隔符,并且将'[]'替换成‘’
regexp_replace(regexp_replace(get_json_object(value,'$.htllist'),'},','}\\|'),'\\]|\\[','')
5.将上一步得到的字符串按照'|'分隔,得到每个酒店信息的数组
lateral view explode(split(m.htllist,'\\|')) n as htlinfo
6.str_to_map函数将酒店信息数组的每个元素转换成map格式,取其中的['hotelid']信息
str_to_map(regexp_replace(n.htlinfo,'\\}|\\{|"',''),',',':')['hotelid']
7.完整的提取sql如下
select str_to_map(regexp_replace(n.htlinfo,'\\}|\\滑颤{|"',''),',',':')['hotelid'] htlinfo,m.vid,m.sid,m.pvid,m.uid,m.cid
from (select regexp_replace(regexp_replace(get_json_object(value,'$.htllist'),'},','}\\|'),'\\]|\\[','') htllist,vid,sid,pvid,uid,cid
from table_xxx
where d='2018-08-08'
and pagecode='condition1'
and key ='condition2' limit 100)m
lateral view explode(split(m.htllist,'\信粗败\|')) n as htlinfo
where m.htllist is not null
[img]hive字符串取值
如果是规整的json字符串,可以先使用Hive函数get_json_object取出dySub
后面的数字,再做sum。
另外也可以贺迟使用Hive函数regexp_extract,使用正则表埋兄达式抽取出dySub
后面的数字。具体可以搜索一下"lxw的大数据田地 hive函数大全",里面有每种函数的详细用弯拍袭法。
hive中的字符串提取
在进行数据分析时,尤其要对网页进行分析时,我们往往要对其中部分的数据进行抽取,这个就需要靠hive的函数来完成了。
首先要讲的是split函数,这个函数的作用是对字符窜进行分割,基本用法为:split(string str, string pat) ,返回值为一个数组array,因此要取值得话需要用到切片,即[数字],其中第一个str是要切分的字符串基逗枣,第二个pat是以什么字符进行切割。来看案例吧。
有的时候切割不是一下就能完成,那么就多去嵌套几次split就好了。
返回字符串从某个位置开始固定长度的子串,和substring功能相同,基本用法为substr(string A, int start, int len ),还是来看例子。值得注意的是搏拆,substr(str,0,2)和substr(str,1,2)的功能都是一样的,都是从第一个位置开始。
这个函数是个神器,可以解析url结构,返回我们想要的东西。基本用法为parse_url(string urlString, string partToExtract [, string keyToExtract]),其中partToExtract的有效值包括HOST,PATH, QUERY, REF, PROTOCOL, AUTHORITY,FILE和USERINFO等,具体我就不一一解释了,大家使用时可以自行百度。重点说一下,当第二个参数是QUERY时,第三个参数就可以使用了,这个是参数提取最有用的方法了,还是以指拦案例来说明。
这个函数是最终的大杀器了,以上都解决不了你的问题的时候,有了这个一切都可以解决,使用这个函数的基础是正则表达式基础要会一些。这个函数的基本用法是regexp_extract(string subject, string pattern, int index),第一个参数是待处理的字符串,第二个参数是写好的正则,第三个表达式一般用不上可以忽略掉。来看例子:
有了以上函数,相信应该能满足大家对于hive进行字符串提取的一切要求了。
关于hive解析json字符串和hive解析多层json数组的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。