使用场景:
explode就是将hive一行中复杂的array或者map结构拆分成多行。
lateral view用于和split, explode等函数一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一或者多行,lateral view再把结果组合,产生一个支持别名表的虚拟表,这里生成的是一个虚拟表。
explode将复杂结构一行拆成多行,然后再用lateral view做各种聚合。
具体使用方法(1):
如下数据: 表名为 table_name_01 中存放两个字段,每个字段值的填充都很完整,现在需要对money字段进行拆分,脚本如下:
id money 1 50,40,20 2 30 3 15,9
select id, money_01
from table_name_01 -- 表名
lateral view explode(split(money,’’)) table_tmp as money_01
上面的脚本中 lateral view 生成的 一个虚拟表,这个虚拟表的表名就是 table_temp,爆炸函数和split组合后生成的新字段就是 money_01
具体使用方法(2):
如下数据: 表名为 table_name_02 中存放两个字段,字段值的填充中,有空值,
如果对money字段进行拆分,就需要加上 outer 关键字,脚本如下:
id money 1 50,40,20 2 30 3 4 15,9
select id, money_02
from table_name_02 -- 表名
lateral view outer explode(split(money,’’)) table_tmp as money_02
———————————————————————————————————————————
组合使用方法(3):
如下数据: 表名为 table_name_03 中存放两个字段,并对 money值进行求和输出
(1) 对下面money,进行求和输出文章来源:https://www.toymoban.com/news/detail-517142.html
id money 1 50,40,20 2 30 3 4 15,9
id money 1 110 2 30 3 4 24
脚本如下:文章来源地址https://www.toymoban.com/news/detail-517142.html
select
id,
sum(money_03) as money
from table_name_03 -- 表名
lateral view outer explode(split(money,’’)) table_tmp as money_03
group by id; -- 根据id,分组求和
到了这里,关于Hive 中的爆炸函数( lateral view 与 explode 用法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!