Hive侧视图 LATERAL VIEW 和 LATERAL VIEW OUTER 使用示例

Hive侧视图 LATERAL VIEW 和 LATERAL VIEW OUTER 使用示例

1. 在Hive SQL中, LATERAL VIEWLATERAL VIEW OUTER 都用于在查询中展开复杂数据类型的字段,但它们之间有一些区别:
  • LATERAL VIEW

    • LATERAL VIEW 用于将复杂数据类型的字段展开为表格形式,以便在查询中使用。
    • 通常与 explode() 函数一起使用,用于展开数组类型的字段。
  • LATERAL VIEW OUTER

    • LATERAL VIEW OUTERLATERAL VIEW 的扩展,用于处理在展开复杂数据类型时可能存在 NULL 值的情况。
    • 当使用 LATERAL VIEW OUTER 时,如果展开操作无法成功(例如,数组字段为 NULL ),则会返回一个 NULL 行。
2. 下面使用实际代码示例来说明:
  • 创建表hero_actions,包含hero和actions两个字段,并插入数据
CREATE TABLE hero_actions
(
    hero    STRING,
    actions STRING
);
INSERT OVERWRITE TABLE hero_actions
VALUES ('Lvbu', '右边腿,左正登'), -- Lvbu的actions包括右边腿和左正登
       ('Jack', null); -- Jack的actions为空
  • 查询一:使用LATERAL VIEW展开actions字段中的数据,并将展开后的数据作为新的字段action
SELECT hero, action
FROM hero_actions
         LATERAL VIEW explode(split(actions, ',')) actionTable AS action;
  • 查询二:使用LATERAL VIEW OUTER展开actions字段中的数据,并将展开后的数据作为新的字段action
SELECT hero, action
FROM hero_actions
         LATERAL VIEW OUTER explode(split(actions, ',')) actionTable AS action;
3. 两个查询执行结果如下:
  • 第一个查询(使用 LATERAL VIEW ):
Lvbu    右边腿
Lvbu    左正登
  • 第二个查询(使用 LATERAL VIEW OUTER ):
Lvbu    右边腿
Lvbu    左正登
Jack    NULL

在第一个查询中,由于 Jack 的 actions 字段为 NULL ,所以在使用 LATERAL VIEW 展开时,不会生成任何新的行。而在第二个查询中,使用 LATERAL VIEW OUTER 能够处理 NULL 值情况,保留了 Jack 的原始行并将 action 字段设为 NULL 。

总的来说, LATERAL VIEWLATERAL VIEW OUTER 都用于在Hive中展开复杂数据类型的字段,但 LATERAL VIEW OUTER 会处理 NULL 值情况,确保展开操作的稳健性。根据具体情况和需求,可以选择合适的关键字来展开数据类型以便在查询中使用。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

公子乂

你的鼓励是我创作的大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值