我有一张表如下:
user_id email
u1 e1, e2
u2 null
Run Code Online (Sandbox Code Playgroud)
我的目标是将其转换为以下格式:
user_id email
u1 e1
u1 e2
u2 null
Run Code Online (Sandbox Code Playgroud)
所以为此我在Hive中使用侧视图explode()函数,如下所示:
select * FROM table LATERAL VIEW explode ( split ( email ,',' ) ) email AS email_id
Run Code Online (Sandbox Code Playgroud)
但是这样做会导致u2行被跳过,因为它在电子邮件中具有空值.我们如何在输出中包含空值?
编辑:我正在使用一个解决方法来执行此表与基表的联合而不会爆炸,但我认为由于这个原因,数据将再次被扫描.我想知道是否有更好的方法来做到这一点.
Nir*_*Ram 12
OUTER在查询中包含以获取具有NULL值的行
就像是,
select * FROM table LATERAL VIEW OUTER explode ( split ( email ,',' ) ) email AS email_id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3975 次 |
| 最近记录: |