2016-07-25 9 views
1

Ich habe eine HDFS-Datei in SequenceFile Format. Der Schlüssel ist und der Wert ist eine benutzerdefinierte serialisierbare Klasse (sagen wir) MyCustomClass. Ich möchte diese Datei über den Befehl hadoop fs -text lesen, aber es schlägt fehl, da hadoop nicht weiß, was MyCustomClass Definition ist.SequenceFile als Text CLI mit benutzerdefinierten Klasse

Ich versuchte auch hdfs dfs - text Befehl, aber bekam die gleiche Antwort zurück. Mit hadoop2.

Gibt es eine Möglichkeit, die Klasse (z. B. über ein Glas wie -cp myjar.jar Option) angeben?

Antwort

0
hadoop fs -libjars my-lib.jar -text output-dir/part-r-* 

Diese in die Sequenzdatei Schlüssel/Wert-Paare lesen und rufen Sie toString() auf beiden Objekte, Reiter ihnen zu trennen, wenn auf stdout ausgibt. Die -libjars gibt an, wo hadoop Ihre benutzerdefinierte Schlüssel/Wert-Klassen

finden

how-to-parse-customwritable-from-text-in-hadoop

+0

Lustig. Ich hatte 'hadoop fs -text -libjars 'versucht, aber nicht' -libjars' Option zuerst versucht: D – Nik

1

Sie können das JAR mit der benutzerdefinierten beschreibbaren Klasse mit -libjars hinzufügen.

Zum Beispiel:

hadoop fs -libjars <JAR>.jar -text <DIR>