Sie benutzen das Zeug richtig.
Link Während Sie Ihren aktuellen Code ausführen, ist die Ausgabe wie
%Vor%Warum ist das so, weil
?Sie geben zwei Schlüssel / Wert-Paare aus.
Erstes Schlüssel / Wert-Paar ist Wert und das zweite Schlüssel-Wert-Paar ist Schlüsseltaste
was ist die richtige? Wert ist 10 und der Schlüssel ist 1
%Vor% Das Trennzeichen kann unter dem Attributnamen %code% angegeben werden. Das Standardtrennzeichen ist das Registerzeichen %code% .
Ändern Sie also in Ihrem Fall die Zeile %code%
zu
und das sollte den Trick machen
Ich habe gerade versucht, dass %code% Schlüssel und Werte genommen wird, wenn sie eine Registerkarte zwischen ihnen haben, sonst wird es die komplette Zeile als Schlüssel nehmen, und es wird nichts im Wert sein.
Also müssen wir %code% anstelle von %code%
verwendenDie Eingabedatei wird in Schlüsselwertpaare konvertiert und die Kartenfunktion wird für alle diese Paare aufgerufen. Im Falle Ihres Beispiels ist die Eingabe für die Zuordnung ein Schlüssel (der wahrscheinlich 1 ist, da es die Zeilennummer in der Datei ist) und am wichtigsten ist Ihr Wert 1,10 10.
Nun können Sie alles aus Ihrem Mapper ausgeben, das erst nach dem Tauschen und Sortieren aller Ausgaben aus dem Mapper zur Reducer-Klasse der Reducer-Klasse geht.
Wenn Sie also context.write (value) von Ihrem Mapper und von Ihrem Reducer ausgeben, erhalten Sie eindeutige Zeilen aus all Ihren Dateien.
Ich glaube nicht, dass ich erklärt habe, was Sie wollen, aber das ist die grundlegende Sache, die in Hadoop Map-Reduce passiert.
Ich benutze hadoop 1.0.1, um ein Projekt zu machen und ich möchte meine Eingabe .txt-Datei zum "Schlüssel" machen und "Wert" den ich brauche, wie:
Wenn ich eine %code% Datei habe und der Dateiinhalt ist
1, 10 10
Ich denke, ich kann "KeyValueTextInputFormat" verwenden und mache "," das Trennungssymbol. Nach der Eingabe ist der Schlüssel "1" und der value ist "10 10" .
Aber das Ergebnis, das ich bekommen habe, ist die ganze Information ist der Schlüssel, der Wert ist leer. Ich weiß nicht, wo das Problem ist.
Bitte geben Sie mir Hilfe, danke!
Dies ist der Beispielcode:
%Vor%Ich benutze hadoop 1.0.1, um ein Projekt zu machen und ich möchte meine Eingabe .txt-Datei zum "Schlüssel" machen und "Wert" den ich brauche, wie:
Wenn ich eine test.txt
Datei habe und der Dateiinhalt ist
1, 10 10
Ich denke, ich kann "KeyValueTextInputFormat" verwenden und mache "," das Trennungssymbol. Nach der Eingabe ist der Schlüssel "1" und der value ist "10 10" .
Aber das Ergebnis, das ich bekommen habe, ist die ganze Information ist der Schlüssel, der Wert ist leer. Ich weiß nicht, wo das Problem ist.
Bitte geben Sie mir Hilfe, danke!
Dies ist der Beispielcode:
%Vor% Das Trennzeichen kann unter dem Attributnamen mapreduce.input.keyvaluelinerecordreader.key.value.separator
angegeben werden. Das Standardtrennzeichen ist das Registerzeichen ('\t')
.
Ändern Sie also in Ihrem Fall die Zeile conf.set("key.value.separator.in.input.line",",");
zu
und das sollte den Trick machen
Sie benutzen das Zeug richtig.
Link Während Sie Ihren aktuellen Code ausführen, ist die Ausgabe wie
%Vor%Warum ist das so, weil
?Sie geben zwei Schlüssel / Wert-Paare aus.
Erstes Schlüssel / Wert-Paar ist Wert und das zweite Schlüssel-Wert-Paar ist Schlüsseltaste
was ist die richtige? Wert ist 10 und der Schlüssel ist 1
%Vor% Ich habe gerade versucht, dass KeyValueTextInputFormat
Schlüssel und Werte genommen wird, wenn sie eine Registerkarte zwischen ihnen haben, sonst wird es die komplette Zeile als Schlüssel nehmen, und es wird nichts im Wert sein.
Also müssen wir 1 10,10
anstelle von 1, 10 10
Die Eingabedatei wird in Schlüsselwertpaare konvertiert und die Kartenfunktion wird für alle diese Paare aufgerufen. Im Falle Ihres Beispiels ist die Eingabe für die Zuordnung ein Schlüssel (der wahrscheinlich 1 ist, da es die Zeilennummer in der Datei ist) und am wichtigsten ist Ihr Wert 1,10 10.
Nun können Sie alles aus Ihrem Mapper ausgeben, das erst nach dem Tauschen und Sortieren aller Ausgaben aus dem Mapper zur Reducer-Klasse der Reducer-Klasse geht.
Wenn Sie also context.write (value) von Ihrem Mapper und von Ihrem Reducer ausgeben, erhalten Sie eindeutige Zeilen aus all Ihren Dateien.
Ich glaube nicht, dass ich erklärt habe, was Sie wollen, aber das ist die grundlegende Sache, die in Hadoop Map-Reduce passiert.
Tags und Links java hadoop mapreduce word-count