2012-03-28 84 views

回答

17

您可以有幾種方法做到這一點:

  • 要設置減速機的數量對所有豬opeations,您可以使用default_parallel屬性 - 但這意味着每一個步驟將使用一個單一的減速機,降低吞吐量:

    set default_parallel 1;

  • 之前要調用STORE,如果操作中的一個執行是(CO-基團,CROSS,DISTINCT,GROUP,JOIN(內),JOIN(外),和ORDER BY),然後你c一個使用PARALLEL 1關鍵字來表示使用單一減速機來完成該命令:

    GROUP a BY grp PARALLEL 1;

有關更多信息,請參見Pig Cookbook - Parallel Features

+0

偉大的東西,克里斯,謝謝! – JasonA 2012-03-29 14:41:45

+0

我不認爲這是理想的,因爲在大輸出數據上使用太少的減速器可能會導致內存不足錯誤。 – FreeTymeKiyan 2017-09-27 18:32:50

15

您還可以使用Hadoop的getmerge命令合併所有這些part- *文件。 這隻有在您從Pig shell(而不是從Java)運行Pig腳本時纔有可能。

這比建議的解決方案更具優勢:因爲您仍然可以使用多個reducer來處理數據,所以您的工作可能運行得更快,尤其是如果每個reducer輸出的數據很少。

grunt> fs -getmerge <Pig output file> <local file>