2014-04-13 26 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中設置的地圖插槽的堆大小)。小桌子越大,你應該爲它設置更多的桶。

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