前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入理解Hive中的Lateral View及Lateral View Outer的用法

深入理解Hive中的Lateral View及Lateral View Outer的用法

作者头像
数据仓库晨曦
发布2024-01-08 15:50:10
4180
发布2024-01-08 15:50:10
举报
文章被收录于专栏:数据仓库技术数据仓库技术

今天我想和大家分享一下在Hive中,Lateral View和Lateral View Outer的用法,这两者是在处理数据时经常遇到的操作。那么它们到底是什么呢?我们今天就来一探究竟。

1. Lateral View用法

Lateral View是配合表生成函数(如explode)一起使用,对array或者map类型的列进行展开。Hive的lateral view是用来连接生成的虚拟表的。

例如,我们有一个包含数组的表:

代码语言:javascript
复制
create table array_table(id int, items array<string>);
insert into array_table(id,items)
values
(1, array('apple', 'banana', 'pear')), 
(2, array('watermelon', 'orange')),
(3, array(null));
代码语言:javascript
复制
+-----+----------------------------+
| id  |           items            |
+-----+----------------------------+
| 1   | ["apple","banana","pear"]  |
| 2   | ["watermelon","orange"]    |
| 3   | NULL                       |
+-----+----------------------------+

如果我们想要把items列展开,可以使用lateral view:

代码语言:javascript
复制
select id, item
from array_table
lateral view explode(items) tmp as item;

结果会是:

代码语言:javascript
复制
+-----+-------------+
| id  |    item     |
+-----+-------------+
| 1   | apple       |
| 1   | banana      |
| 1   | pear        |
| 2   | watermelon  |
| 2   | orange      |
+-----+-------------+

如此可以清晰地看到,Lateral View是用于与复杂数据类型交互的强大工具。

2. Lateral View Outer用法

然而,Lateral View有一个限制——如果在explode的列中有空值,那么它会将包含空值的行完全去掉。这时,我们就可以使用Lateral View Outer。

只需要在lateral view后加上outer,它就会保留那些包含空值的行。如果数组为空,那么explode的结果就会是NULL。

我们使用lateral view outer:

代码语言:javascript
复制
select id, item
from array_table
lateral view outer explode(items) tmp as item;

结果会是:

代码语言:javascript
复制
+-----+-------------+
| id  |    item     |
+-----+-------------+
| 1   | apple       |
| 1   | banana      |
| 1   | pear        |
| 2   | watermelon  |
| 2   | orange      |
| 3   | NULL        |
+-----+-------------+

你可看到,id为3的行得以保留,不再被忽视。

希望本文的内容可以帮助你更好地理解Hive中的Lateral View和Lateral View Outer的用法。在Hive中处理复杂数据类型时,这两种方法无疑会是你的强大武器。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据仓库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Lateral View用法
  • 2. Lateral View Outer用法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档