2011-02-24 32 views
1

我正在測試我的數據集部分中的最新Hive。這只是幾GB的日誌文件,我通過自定義的SerDe讀取。如何在Apache Hive中爲(小)數據集並行化查詢

當運行簡單GROUP BY的查詢(4個MR作業),我正在日誌如

  • 地圖:100%
  • 降低率:0%
  • 圖:85%
  • 降低率:0%
  • 地圖:86%
  • 降低率:0%

一直只使用8核心服務器上的一個核心。一種浪費...

我已經激活了並行選項,但它仍然不會並行化。我已將減少作業的數量設置爲8.

我的期望是,由於我的數據集是分區的(=>不同文件),因此至少有一些map-reduce階段可以在這些文件上並行運行。

我理解錯了嗎?有沒有特定的方式來編寫查詢?

感謝

回答

2

如果你什麼都不做,但一個簡單的GROUP BY,唯一真正的處理是比較,這並不難。也就是說,你運行了多少mappers?任務路徑不會並行運行。相反,hadoop銀行在多個任務路徑上運行並行。因此,如果您只爲每個節點運行一個地圖任務,則不會看到任何內容。

另一種可能性是因爲你在做一個GROUP BY,你的綁定在IO而不是在處理器上,所以沒有必要把多個內核加入它。

+1

感謝您的回答。事實證明,這主要是因爲我在本地模式下進行了驗證測試,因此它不會同時啓動多個任務。只要我改變爲一個僞羣集,並允許它運行多個地圖並按照您的建議平行減少,它就可以工作! – 2011-03-30 10:50:35