Obecnie, gdy przechowuję w HDFS, tworzy wiele plików części.STORE dane wyjściowe do jednego pliku CSV?
Czy istnieje sposób przechowywania do pojedynczego pliku CSV?
Obecnie, gdy przechowuję w HDFS, tworzy wiele plików części.STORE dane wyjściowe do jednego pliku CSV?
Czy istnieje sposób przechowywania do pojedynczego pliku CSV?
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
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>
Świetne rzeczy, Chris, dzięki! – JasonA
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