hive解析json字符串(hive解析多层json数组)

本篇文章给大家谈谈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数组的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表