2017-07-07 33 views
1

我正在像tableA的蜂巢查詢偏斜數據左連接上tableA.col1 = tableB.col1和tableA.col2 = tableB.col2 tableB的。 tableA擁有18億個數據,tableB擁有3100萬個記錄。現在,在我參加的最後減速是沒有得到完成,並且運行長。造成長時間運行的查詢在蜂巢

這可能是因爲偏斜數據。我也試過MAPJOIN和查詢失敗,因爲TableA的龐大的數據量。還有其他的選擇可以以更好的方式處理嗎?

,我可以看到運行的長期任務是如下

reduce > copy task(attempt_1498868574233_185232_m_001336_0 succeeded at 8.94 MB/s) Aggregated copy rate(1121 of 2532 at 108.94 MB/s) 

正是它試圖在這一步呢?

+0

在這裏看到:https://stackoverflow.com/a/37414611/2700344 – leftjoin

+0

@leftjoin,無須手動變通。 Hive支持傾斜連接。 –

回答

0

設置hive.optimize.skewjointrue

hive.optimize.skewjoin
默認值:FALSE
加入:蜂巢0.6.0
是否啓用歪斜連接優化。

您可能還需要調整hive.skewjoin.keyhive.skewjoin.mapjoin.map.taskshive.skewjoin.mapjoin.min.split

hive.skewjoin.key
默認值:100000
加入:蜂巢0.6.0
確定,如果我們得到一個斜鍵加入。如果我們看到多於 連接運算符中具有相同鍵的指定行數,我們認爲 鍵是一個偏斜連接鍵。

hive.skewjoin.mapjoin.map.tasks
默認值:10000
加入:蜂巢0.6.0
確定在跟進地圖 使用的地圖任務的數量參加工作的歪斜加入。它應與 hive.skewjoin.mapjoin.min.split被用來進行細粒度控制。

hive.skewjoin.mapjoin.min.split
默認值:33554432
加入:蜂巢0.6.0
確定在最常用的地圖任務的數量遵循 了圖加入工作的通過指定最小分割大小來進行歪斜連接。 應當與hive.skewjoin.mapjoin.map.tasks一起使用,以 執行細粒度控制。

https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties