【问题标题】:HIVE: How to include null rows in lateral view explodeHIVE:如何在横向视图中包含空行爆炸
【发布时间】:2017-04-04 14:11:04
【问题描述】:

我有一张如下表:

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 行,因为它在电子邮件中具有空值。我们如何在输出中也包含空值?

编辑:我正在使用一种解决方法将此表与基表合并而不爆炸,但我认为数据将因此被再次扫描一次。我想知道是否有更好的方法。

【问题讨论】:

    标签: hive hiveql


    【解决方案1】:

    在查询中包含 OUTER 以获取具有 NULL 值的行

    类似的,

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

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

    【讨论】:

      猜你喜欢
      • 2019-03-17
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2018-12-21
      • 2018-01-02
      • 2022-08-23
      • 1970-01-01
      相关资源
      最近更新 更多