热线电话:13121318867

登录
2018-10-18 阅读量: 1150
HIVE join的三种方式

1.MapJoin

mapJoin的主要意思就是,当连接的两个表是一个比较小的表和一个特别大的表的时候,把比较小的table直接放到内存中去,然后再对比较大的表格进行map操作。map端join的优势就是在于没有shuffle。而且在hive1.2.0之后只需设置

set hive.auto.convert.join=true;

set hive.mapjoin.smalltable.filesize=300000000;  

    hive就会自动的识别比较小且小于下面阈值的表,继而用mapJoin来实现两个表的联合。
2.Common Join

common join也叫做shuffle join,reduce join操作。这种情况下两个table的大小相当,但是又不是很大的情况下使用的。具体流程就是在map端进行数据的切分,一个block对应一个map操作,然后进行shuffle操作,把对应的block shuffle到reduce端去,再逐个进行联合。
3.SMB Join

smb是指sort merge bucket操作,首先进行排序,继而合并,然后放到所对应的bucket中去,bucket是hive中和分区表类似的技术,就是按照key进行hash,相同的hash值都放到相同的bucket中去。首先进行分桶,再join会大幅度提升性能。在联合的时候,是table1中的一小部分和table1中的一小部分进行联合,table联合都是等值连接,相同的key都放到了同一个bucket中去了,那么在联合的时候就会大幅度的减小无关项的扫描。

0.0000
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子