您的位置 首页 大数据运维

Hive 的 join 有几种方式,怎么实现 join 的

Hive 的 join 有几种方式,怎么实现 join 的

(1)Hive 中常见的 join 方式

Hive 中除了支持和传统数据库中一样的内关联、左关联、右关联、全关联,还支持 LEFT SEMI
JOIN 和 CROSS JOIN,但这两种 JOIN 类型也可以用前面的代替

(2)如何实现 join

 

1)内关联(JOIN)只返回能关联上的结果。SELECT a.id, a.name, b.age FROM djt_a a join
djt_b b ON (a.id = b.id);
2) 左外关联(LEFT [OUTER] JOIN) 以 LEFT [OUTER] JOIN 关键字前面的表作为主表,和
其他表进行关联,返回记录和主表的记录数一致,关联不上的字段置为 NULL。 是否指定OUTER 关键字,貌似对查询结果无影响。
SELECT a.id, a.name, b.age FROM djt_a a left join djt_b b ON (a.id = b.id);
3)右外关联(RIGHT [OUTER] JOIN) 和左外关联相反,以 RIGTH [OUTER] JOIN 关键词后
面的表作为主表,和前面的表做关联,返回记录数和主表一致,关联不上的字段为 NULL。
是否指定 OUTER 关键字,貌似对查询结果无影响。
SELECT a.id, a.name, b.age FROM djt_a a RIGHT OUTER JOIN djt_b b ON (a.id = b.id);
4) 全外关联(FULL [OUTER] JOIN) 以两个表的记录为基准,返回两个表的记录去重之和,
关联不上的字段为 NULL。 是否指定 OUTER 关键字,貌似对查询结果无影响。 注意:FULL
JOIN 时候,Hive 不会使用 MapJoin 来优化。
SELECT a.id, a.name, b.age FROM djt_a a FULL OUTER JOIN djt_b b ON (a.id = b.id)

5) LEFT SEMI JOIN 以 LEFT SEMI JOIN 关键字前面的表为主表,返回主表的 KEY 也在副表
中的记录。
SELECT a.id, a.name FROM djt_a a LEFT SEMI JOIN djt_b b ON (a.id = b.id);
6) 笛卡尔积关联(CROSS JOIN) 返回两个表的笛卡尔积结果,不需要指定关联键。
SELECT a.id, a.name, b.age FROM djt_a a CROSS JOIN djt_b b

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章