2012-03-28 10 views

risposta

17

Si può fare questo in pochi modi:

  • Per impostare il numero di riduttori per tutti opeations Pig, è possibile utilizzare la proprietà default_parallel - ma questo significa che ogni singolo passo sarà utilizzare un unico riduttore, rendimento decrescente:

    set default_parallel 1;

  • Prima STORE chiamata, se una delle operazioni eseguire è (COGROUP, CROSS, DISTINCT, GROUP, JOIN (interno), ENTRARE (esterno) e ORDER BY), allora tu c un uso la parola chiave PARALLEL 1 per indicare l'uso di un unico riduttore per completare quel comando:

    GROUP a BY grp PARALLEL 1;

Vedi Pig Cookbook - Parallel Features per ulteriori informazioni

+0

Grandi cose, Chris, grazie! – JasonA

+0

Non penso che questo sia l'ideale, dal momento che si potrebbe uscire dall'errore di memoria con troppo pochi riduttori su grandi dati di output. – FreeTymeKiyan

15

È inoltre possibile utilizzare il comando getmerge di Hadoop per unire tutti coloro part-* file. Questo è possibile solo se si eseguono gli script Pig dalla shell Pig (e non da Java).

Questo è un vantaggio rispetto alla soluzione proposta: poiché è possibile utilizzare diversi riduttori per elaborare i dati, il lavoro potrebbe essere più veloce, soprattutto se ciascun riduttore emette pochi dati.

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