Hive行转列(explode/lateral view)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive行转列(explode/lateral view)相关的知识,希望对你有一定的参考价值。
参考技术A explode称之为Hive爆炸函数,意思就是将一行数据炸开。Usage:explode(array/map) explode函数传递的参数必须是一个array或者是map。
一、具体例子进行实践
现在有一张表有以下字段
需要将cureses转成列的形式。
二、扩展
上面可以看到表中还有一个用户ID,正常情况下肯定是用户对应课程的。正常的想法是以下的SQL
但是执行会报错
通常工作中,explode会结合laderal view使用。因为我们不可能只取explode里面的值,还要取其他的字段。
那么正常SQL应该是下面的
hive的行转列和列转行
参考技术A 如下图:1、列转行,即table1查询出table2
select
`order_id`,
concat_ws(',', collect_list(`item_sku_id`))
from
table1
group by
`order_id`;
2、行转列,即table2查询出table1
select
`order_id`,
`item_sku_id`
from
table2 lateral view explode(split(item_sku_id), ',') as table as item_sku_id;
以上是关于Hive行转列(explode/lateral view)的主要内容,如果未能解决你的问题,请参考以下文章
Hive 行转列LATERAL VIEW explode使用方法
hadoop入门系列--hive中array(或map集合类型)的行转多列LATERAL VIEW explode用法