hadoop入门系列--hive中array(或map集合类型)的行转多列LATERAL VIEW explode用法

hadoop入门系列--hive中array(或map集合类型)的行转多列LATERAL VIEW explode用法,第1张

传送门

hadoop入门系列--hive基础

hadoop入门系列--hive的三种集合数据类型array、map、struct以及自定义分隔符示例

hadoop入门系列--hive中array(或map集合类型)的行转多列LATERAL VIEW explode用法

传送门

在做hive相关练习时,遇到这个看不懂。lateral view explode(category) t_catetory as category_name

示例数据:

练习:

1143 统计出视频观看数最高的 20 个视频的所属类别以及类别包含

Top20 视频的个数

思路:

类别1: 7

类别2: 3

#hive相关资料

#>

一次比较复杂的从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(mhtllist,'\\|')) n as htlinfo

6str_to_map函数将酒店信息数组的每个元素转换成map格式,取其中的['hotelid']信息

str_to_map(regexp_replace(nhtlinfo,'\\}|\\{|"',''),',',':')['hotelid']

7完整的提取sql如下

select str_to_map(regexp_replace(nhtlinfo,'\\}|\\{|"',''),',',':')['hotelid'] htlinfo,mvid,msid,mpvid,muid,mcid

  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(mhtllist,'\\|')) n as htlinfo

where mhtllist is not null

:Hive的insert语句能够从查询语句中获取数据,并同时将数据Load到目标表中。现在假定有一个已有数据的表staged_employees(雇员信息全量表),所属国家cnty和所属州st是该表的两个属性,我们做个试验将该表中的数据查询出来插入到另一个表

以上就是关于hadoop入门系列--hive中array(或map集合类型)的行转多列LATERAL VIEW explode用法全部的内容,包括:hadoop入门系列--hive中array(或map集合类型)的行转多列LATERAL VIEW explode用法、Hive常用命令、解析Hive复杂字段1--lateral view explode等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10158245.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存