Derzeit, wenn ich in HDFS SPEICHERN, erstellt es viele Teile Dateien.STORE-Ausgabe zu einer einzelnen CSV?
Gibt es eine Möglichkeit, in einer einzigen CSV-Datei zu speichern?
Derzeit, wenn ich in HDFS SPEICHERN, erstellt es viele Teile Dateien.STORE-Ausgabe zu einer einzelnen CSV?
Gibt es eine Möglichkeit, in einer einzigen CSV-Datei zu speichern?
du in ein paar Möglichkeiten tun können:
die Anzahl der Reduzierungen für alle Pig opeations einzustellen, können Sie die default_parallel
Eigenschaft nutzen können - aber jeder einzelne Schritt bedeutet eine einzige Minderer verwenden, abnehm Durchsatz:
set default_parallel 1;
vor dem Aufruf von Speicher, wenn eine der Operationen auszuführen ist (COGROUP, Kreuz, DISTINCT, GROUP, JOIN (innere), JOIN (äußere) und ORDER BY), dann du c eine Verwendung der PARALLEL 1
Schlüsselwort, um die Verwendung eines einzigen Minderer zu bezeichnen diesen Befehl auszuführen:
GROUP a BY grp PARALLEL 1;
Pig Cookbook - Parallel Features Für weitere Informationen siehe
Sie können auch alle verschmelzen Hadoop des getmerge Befehl Teil- * Dateien. Dies ist nur möglich, wenn Sie Ihre Pig-Skripte aus der Pig-Shell (und nicht aus Java) ausführen.
Dies ist ein Vorteil gegenüber der vorgeschlagenen Lösung: Da Sie immer noch mehrere Reduzierstücke verwenden können, um Ihre Daten zu verarbeiten, kann Ihr Auftrag schneller ausgeführt werden, insbesondere wenn jeder Reduzierer wenige Daten ausgibt.
grunt> fs -getmerge <Pig output file> <local file>
Tolles Zeug, Chris, danke! – JasonA
Ich denke nicht, dass dies ideal ist, da Sie mit zu wenigen Untersetzern bei großen Ausgabedaten einen Speicherfehler bekommen könnten. – FreeTymeKiyan