Wie steuere ich Ausgabedateien Namen und Inhalt eines Hadoop Streaming-Job?
-
23-08-2019 - |
Frage
Gibt es eine Möglichkeit, die Ausgabe-Dateinamen eines Hadoop Streaming Job zu kontrollieren? Insbesondere würde ich meinen Job der Ausgabedateien Inhalt und Namen wie die Reduktions Ausgänge vom ket organisiert werden -. Jede Datei würde nur Werte für einen Schlüssel und den Namen der Schlüssel wäre enthalten
Update: Nur fand die Antwort - eine Java-Klasse verwenden, die von MultipleOutputFormat leitet als die Arbeitsplätze Ausgabeformat Steuerung der Ausgabedateinamen erlaubt. http: //hadoop.apache .org / core / docs / Strom / api / org / apache / hadoop / mapred / lib / MultipleOutputFormat.html
Ich habe keine Proben für diese da draußen gesehen ... Kann jemand auf eine Hadoop Streaming Probe weist darauf hin, dass die Verwendung einer benutzerdefiniertes Ausgabeformat Java-Klasse macht?
Lösung
eine Java-Klasse verwenden, die von MultipleOutputFormat leitet als die Arbeitsplätze Ausgabeformat Steuerung der Ausgabedateinamen erlaubt. http: //hadoop.apache .org / core / docs / Strom / api / org / apache / hadoop / mapred / lib / MultipleOutputFormat.html
Wenn Hadoop Streaming verwenden, da nur eine JAR unterstützt Sie tatsächlich das Streaming-Glas Gabel haben und setzen Sie Ihre neue Ausgabeformat Klassen in ihm für das Streaming von Arbeitsplätzen, um es zu verweisen ...
EDIT: Ab Version 0.20.2 von hadoop dieser Klasse ist veraltet und Sie sollten jetzt verwenden: http: // hadoop .apache.org / docs / mapreduce / Strom / api / org / apache / hadoop / MapReduce / lib / output / MultipleOutputs.html
Andere Tipps
Im Allgemeinen Hadoop müßte Sie das gesamte Verzeichnis betrachten die Ausgabe zu sein, und nicht eine einzelne Datei. Es gibt keine Möglichkeit, direkt die Dateinamen zu steuern, ob Streaming oder regelmäßige Java Jobs verwenden.
wird jedoch nichts hindert Sie daran, diese Spaltung zu tun und das Umbenennen von selbst, nachdem die Arbeit beendet hat. Sie können Hadoop dfs $ -cat path / to / your / Ausgabe / directory / Teil * und Rohr, das zu einem Skript von Ihnen, die durch Tasten Inhalt bis spaltet und schreibt sie in neue Dateien.