HIVE:如何在侧视图中包含空行爆炸

时间:2016-11-21 08:36:16

标签: hive hiveql

我有一张表格如下:

user_id email
u1      e1, e2
u2      null

我的目标是将其转换为以下格式:

user_id email
u1      e1
u1      e2
u2      null

所以为此我在Hive中使用横向视图explode()函数,如下所示:

select *  FROM table LATERAL VIEW explode (  split (  email  ,','  ) ) email AS email_id 

但是这样做会跳过u2行,因为它在电子邮件中有空值。我们如何在输出中包含空值?

编辑:我正在使用一种解决方法,将此表与基表联合起来而不会爆炸,但我认为由于这个原因,数据将再次被扫描。我想知道是否有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:10)

在查询中包含select * FROM table LATERAL VIEW OUTER explode ( split ( email ,',' ) ) email AS email_id; 以获取具有NULL值的行

之类的,

foreach()

检查此链接 - > https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LateralView#LanguageManualLateralView-OuterLateralViews