当前位置:   article > 正文

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

hive侧视图

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为空
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 查询一:使用LATERAL VIEW展开actions字段中的数据,并将展开后的数据作为新的字段action
SELECT hero, action
FROM hero_actions
         LATERAL VIEW explode(split(actions, ',')) actionTable AS action;
  • 1
  • 2
  • 3
  • 查询二:使用LATERAL VIEW OUTER展开actions字段中的数据,并将展开后的数据作为新的字段action
SELECT hero, action
FROM hero_actions
         LATERAL VIEW OUTER explode(split(actions, ',')) actionTable AS action;
  • 1
  • 2
  • 3
3. 两个查询执行结果如下:
  • 第一个查询(使用 LATERAL VIEW ):
Lvbu    右边腿
Lvbu    左正登
  • 1
  • 2
  • 第二个查询(使用 LATERAL VIEW OUTER ):
Lvbu    右边腿
Lvbu    左正登
Jack    NULL
  • 1
  • 2
  • 3

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/655730
推荐阅读
相关标签
  

闽ICP备14008679号