/ / Wie füge ich eine Datei in hadoop an? - Java, Hadoop

Wie füge ich eine Datei in hadoop an? - Java, Hadoop

Ich möchte eine Datei in HDFS erstellen, die eine Menge enthältvon Zeilen, die jeweils durch einen anderen Aufruf zur Zuordnung generiert werden. Ich interessiere mich nicht für die Reihenfolge der Zeilen, nur dass sie alle in die Datei eingefügt werden. Wie kann ich das erreichen?

Wenn dies nicht möglich ist, gibt es eine Standardmethode, um eindeutige Dateinamen zu generieren, um jede Zeile der Ausgabe in eine separate Datei zu setzen.

Antworten:

1 für die Antwort № 1

Es gibt keine Möglichkeit, an eine vorhandene Datei in anzuhängenhadoop im Moment, aber "das klingt nicht so, als wollten Sie es sowieso tun. Es klingt wie Sie möchten, dass die Ausgabe Ihres Map Reduce-Jobs in eine einzige Datei verschoben wird, was durchaus möglich ist. Die Anzahl der Ausgabedateien ist (kleiner oder gleich) gleich der Anzahl der Reduzierstücke. Wenn Sie also die Anzahl der Reduzierstücke auf 1 setzen, erhalten Sie eine einzige Ausgabedatei.

Bevor Sie dies tun, überlegen Sie jedoch, obDas ist, was Sie wirklich wollen. Sie werden in Ihrer Pipeline einen Flaschenhals schaffen, in dem alle Ihre Daten durch eine einzige Maschine geleitet werden müssen. Innerhalb des verteilten HDFS-Dateisystems ist der Unterschied zwischen einer Datei und mehreren Dateien ziemlich transparent. Wenn Sie eine einzelne Datei außerhalb des Clusters wünschen, sollten Sie sie besser verwenden Getmerge von den Dateisystemwerkzeugen.


1 für die Antwort № 2

Sowohl Ihre Map- als auch die Reduktionsfunktion sollten ausgegeben werdenDie Linien. Mit anderen Worten, Ihre Reduzierfunktion ist eine Durchleitungsfunktion, die nicht viel tut. Setzen Sie die Anzahl der Reduzierstücke auf 1. Die Ausgabe enthält eine Liste aller Zeilen in einer Datei.