2017-09-29 1 views
0

Im Moment durch die Hadoop documentation über Mapper Klasse Ich werdeWarum würden Sie den Rückgabewert als Funktionsparameter in Hadoop definieren?

In der Signatur (, dass die richtige Nomenklatur ist?), Müssen wir festlegen, was wir in sie setzen, und auch das, was kommt:

Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT> 

Bedeutet das, dass wir diese Datenstrukturen definieren und instanziieren müssen, außerhalb von wo wir dies nennen?

+0

Sie meinen, wie dieses Beispiel auf dieser Seite? Öffentliche Klasse TokenCounterMapper erweitert Mapper diese Typen müssen vom Compiler bekannt sein, aber was soll ich vor dem Aufruf der Methode initialisieren? Sie würden das Ergebnis der Methode vor dem Ausführen der Methode festlegen? – Stultuske

Antwort

1

Sie müssen das InputFormat und das OutputFormat der spezifischen MapReduce-Aufgabe yes definieren. Es ist jedoch nicht der Rückgabewert, sondern was in die Context-Ausgabe geschrieben wird.

Dies wird alles über die Job-Klasse konfiguriert.

Die "Signatur", wie Sie es nennen, ist nicht anders als jede andere Anwendung von Java-Generika.

Für das Standard-TextInputFormat + LineRecordReader verwenden sie LongWritable und Text für diese Parameter.

Andere Formate und Schreibvorgänge sind bereits von den Hadoop-Bibliotheken definiert, wenn Sie das fragen.

Sie können gerne Ihre eigenen definieren, aber

+0

meinst du, ich wäre in der Lage, den WordCount-Code weitgehend wiederzuverwenden, wenn ich versuche, ein Array von Strings der Form 'makePush, 1964' zu übergeben, d. H. Jeder Datensatz sieht so aus? –

+0

Sie würden eine Textdatei an den Mapper übergeben, wie es die Wortzahl angibt. Nicht ein Array –

+0

Ich habe versucht, die Dateien in einer Art und Weise von einer seltsamen Art und Weise zu verarbeiten - wie diese https://gist.github.com/smatthew-english/5757c6cd01bcb2fa0bca656e9637efac das ist, warum ich dachte, es als zu tun eine Anordnung. also - diese Datei ist dann nicht so nützlich? –

Verwandte Themen