2012-03-28 6 views

Odpowiedz

17

Można to zrobić na kilka sposobów:

  • Aby ustawić liczbę reduktorów dla wszystkich opeations świnia, można użyć właściwości default_parallel - ale to oznacza każdy krok będzie wykorzystywać jeden reduktor, zmniejszając przepustowość:

    set default_parallel 1;

  • przed wywołaniem sklepie, jeśli jedna z operacji wykonać jest (COGROUP, krzyż, DISTINCT, grupa, JOIN (wewnętrzna), JOIN (zewnętrzna) oraz ORDER bY), a następnie ty użycie słowa kluczowego PARALLEL 1 oznaczający zastosowanie pojedynczego reduktora, aby zakończyć tę komendę:

    GROUP a BY grp PARALLEL 1;

Zobacz Pig Cookbook - Parallel Features więcej informacji

+0

Świetne rzeczy, Chris, dzięki! – JasonA

+0

Nie sądzę, że jest to idealne rozwiązanie, ponieważ może pojawić się błąd pamięci przy zbyt małej liczbie reduktorów na dużych danych wyjściowych. – FreeTymeKiyan

15

Można również użyć polecenia getmerge Hadoop, aby połączyć tych wszystkich part- * files. Jest to możliwe tylko wtedy, gdy uruchamiasz swoje skrypty Pig z powłoki Pig (a nie z Java).

Jest to zaleta w stosunku do proponowanego rozwiązania: ponieważ nadal można korzystać z kilku reduktorów do przetwarzania danych, dzięki czemu praca może przebiegać szybciej, zwłaszcza jeśli każdy reduktor wypuści kilka danych.

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