Hive侧视图Lateral View--规范化行或解析JSON

  • 1、与表生成函数结合使用,将函数的输入和输出连接
  • 2、OUTER关键字:即使output为空也会生成结果
select name,work_place,loc from employee lateral view outer explode(split(null,',')) a as loc;
  • 3、支持多层级
select name,wps,skill,score from employee 
lateral view explode(work_place) work_place_single as wps
lateral view explode(skills_score) sks as skill,score;
  • 4、通常用于规范化行或解析JSON

示例:

有一张hive外部表employee_external,表中数据如下:
在这里插入图片描述
建表语句如下:
在这里插入图片描述

我们发现第二个字段work_place是数组,现在我们需将work_place里的内容扁平化处理,这时候可以用侧视图

select name, wps, sex_age,skills_score,depart_title from employee_external
lateral view explode(work_place) workplace as wps;

在这里插入图片描述
我们发现skills_score的格式比较固定,由两部分组成,现在我们需要把skills_score分为skills和score,也可以用侧视图,

select name, wps, skill,score from employee_external
lateral view explode(work_place) workplace as wps
lateral view explode(skills_score) sks as skill,score;

在这里插入图片描述

虽然sex_age格式看着也比较固定,但是不能用侧视图,会报错FAILED: UDFArgumentException explode() takes an array or a map as a parameter,也就是说字段类型是array或者map才能用侧视图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值