为Hive的Bucketed Join确定#Buckets

时间:2014-04-13 05:31:00

标签: join hadoop hive

我有多个表,表A,表B和表C.我希望能够使用Hive的分段映射连接。我知道A,B,C的桶应该是彼此的倍数。

在创建表格时是否有关于估算所需#buckets的一般规则,以确保地图侧连接?

1 个答案:

答案 0 :(得分:0)

我还没有在生产中使用Bucket Map Join,所以只根据桶图加入的原理进行了一些推断。

在Bucket Join中,来自两个表的相关存储桶连接在一起,使用小表的存储桶构建哈希表,并按原始顺序逐个迭代大表的存储桶文件,探测哈希表在内存中并生成连接结果。

所以,我认为small table's each bucket should be small enough to put in memory(map map'你在mapred-site.xml中设置的堆大小)。小桌子越大,你应该为它设置的桶越多。

我认为大表的桶号可以是任意数字,只是小表的桶号的倍数。