2014-04-13 23 views
0

我有多个表A,表B和表C.我希望能够使用Hive的bucketed地图连接。我知道A,B,C的桶应该是彼此的倍数。确定Hive的Bucketed Join的#Buckets

在创建表格时估计所需#buckets以确保地图端连接是否有一个通用规则?

回答

0

我还没有使用Bucket Map加入生产,所以只是基于桶映射连接的原理进行一些推理。

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

因此,我认为small table's each bucket should be small enough to put in memory(mapred-site.xml中设置的地图插槽的堆大小)。小桌子越大,你应该为它设置更多的桶。

我觉得大桌子的桶数可以是任意数量,只是小桌子的桶数的倍数。