我有多个表,表A,表B和表C.我希望能够使用Hive的分段映射连接。我知道A,B,C的桶应该是彼此的倍数。
在创建表格时是否有关于估算所需#buckets的一般规则,以确保地图侧连接?
答案 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中设置的堆大小)。小桌子越大,你应该为它设置的桶越多。
我认为大表的桶号可以是任意数字,只是小表的桶号的倍数。