left semi join 和 left join 区别

本文探讨了left semi join和left join的联系与区别。left semi join仅返回左表信息,是left join的优化,尤其适用于查询存在的匹配项。在HIVE中,left semi join和JOIN ON在特定条件下可能产生不同结果,由于子表数据重复,JOIN ON可能导致多条记录,而left semi join则不会。理解两种写法的原理有助于避免潜在问题。
摘要由CSDN通过智能技术生成

left semi join 和 left join 联系和区别

1、都是左表连接,但是semi join右表关联不左表也不会出来,left join不一样
2、semi join只能查询左表信息,left join可以查询所有
3、semi join是left join的一种优化
4、semi join一般使用查询存在的情况

例子:
数据准备:
1,a
2,b
3,c
4,d
7,y
8,u

2,bb
3,cc
7,yy
9,pp
----------------------------------------
执行:
set hive.exec.mode.local.auto=true;
select
u1.*
from u1 u1
left join u2 u2
on u1.id = u2.id
where u2.id is null
;

----结果
Total MapReduce CPU Time Spent: 0 msec
OK
1       a
4       d
8       u
Time taken: 9.829 seconds, Fetched: 3 row(s)


分析:
联系:
他们都是 hive join 方式的一种,join on 属于 common join(shuffle join/reduce join),而 left semi join 则属于 map join(broadcast join)的一种变体,从名字可以看出他们的实现原理有差异
区别࿱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值