赞
踩
Hive侧视图 LATERAL VIEW 和 LATERAL VIEW OUTER 使用示例
LATERAL VIEW
和 LATERAL VIEW OUTER
都用于在查询中展开复杂数据类型的字段,但它们之间有一些区别:LATERAL VIEW:
LATERAL VIEW
用于将复杂数据类型的字段展开为表格形式,以便在查询中使用。explode()
函数一起使用,用于展开数组类型的字段。LATERAL VIEW OUTER:
LATERAL VIEW OUTER
是 LATERAL VIEW
的扩展,用于处理在展开复杂数据类型时可能存在 NULL
值的情况。LATERAL VIEW OUTER
时,如果展开操作无法成功(例如,数组字段为 NULL
),则会返回一个 NULL
行。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;
Lvbu 右边腿
Lvbu 左正登
Lvbu 右边腿
Lvbu 左正登
Jack NULL
在第一个查询中,由于 Jack 的 actions 字段为 NULL ,所以在使用 LATERAL VIEW 展开时,不会生成任何新的行。而在第二个查询中,使用 LATERAL VIEW OUTER 能够处理 NULL 值情况,保留了 Jack 的原始行并将 action 字段设为 NULL 。
总的来说,
LATERAL VIEW
和LATERAL VIEW OUTER
都用于在Hive中展开复杂数据类型的字段,但LATERAL VIEW OUTER
会处理NULL
值情况,确保展开操作的稳健性。根据具体情况和需求,可以选择合适的关键字来展开数据类型以便在查询中使用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。