一:hive中的三种join
1.map join
应用场景:小表join大表
一:设置mapjoin的方式:
)如果有一张表是小表,小表将自动执行map join。
默认是true。
hive.auto.convert.join
true
)判断小表
hive.mapjoin.smalltable.filesize
25000000
二:隐式执行
/*+ MAPJOIN(tb_name) */
两种方式说明:
2.reduce join
应用场景:大表join大表
但是效率不高。
3.SMB join(sort merger bucket):hash取余
排序合并桶。
条件:A桶个数必须与B桶的个数相同,或者B桶的个数是A桶的个数的倍数
例如:
A:4
B:8
——》A的每一个桶joinB桶的两个小桶就可以了。
设置:
hive.auto.convert.sortmerge.join=true
二:数据倾斜
1.原因
指在mapreduce中某一个值数据量过多,导致reduce的负载不均衡
主要分为
join
group by
三:参考数据倾斜
1.链接