Warum wird meine Sequenzdatei zweimal in meiner Hadaop-Mapper-Klasse gelesen?

StackOverflow https://stackoverflow.com/questions/9514710

  •  14-11-2019
  •  | 
  •  

Frage

Ich habe eine Sequenzdatei mit 1264 Datensätzen. Jeder Schlüssel ist für jeden Datensatz einzigartig. Mein Problem ist, dass mein Mapper diese Datei zweimal liest oder zweimal gelesen wird. Für die Überprüfung von Sanity habe ich eine kleine Utility-Klasse geschrieben, um die Sequenzdatei zu lesen, und tatsächlich gibt es nur 1264 Datensätze (d. H. SequenceFile.Reader).

In meinem Reduzierer sollte ich nur 1 Rekord pro profitierbar bekommen, wenn ich über den iterananen (Iterator) i-iteriere, bekomme ich 2 Datensätze pro Schlüssel (immer 2 pro Schlüssel und nicht 1 oder 3 oder etwas anderes pro Schlüssel ).

Die Protokollierungsausgabe meines Jobs ist unten. Ich bin mir nicht sicher, warum, aber warum ist es, dass die "Gesamteingabepfade zum Prozess" 2 sind? Wenn ich meinen Job ausführe, versuche ich -DMAPRED.Input.Dir= / Daten und auch -dmapred.input.dir= / data / part-r-00000, aber trotzdem beträgt die Gesamtwege zum Prozess 2.

Jede Idee wird geschätzt. generasacodicetagpre.

Meine Mapper-Klasse ist sehr einfach. Es liest in einer Textdatei. Zu jeder Zeile hängt er "m" an die Zeile an. generasacodicetagpre.

meine Reduzierklasse ist auch sehr einfach. Es hängt einfach "R" an die Zeile an. generasacodicetagpre.

Meine Jobklasse ist wie folgt. generasacodicetagpre.

Meine Eingabedaten sehen aus wie folgt aus. generasacodicetagpre.

Nachdem ich meinen Job ausgeführt habe, bekomme ich einen Ausgang wie folgt. generasacodicetagpre.

Hat ich etwas falsch gemacht, mit dem ich meinen Job aufstellt? Ich habe den folgenden Weg ausprobiert, um meinen Job auszuführen, und in diesem Ansatz wird die Datei nur einmal gelesen. warum ist das? Die Werte system.out.println (inpath) und system.out.println (outpath) sind identisch! Hilfe? generasacodicetagpre.

War es hilfreich?

Lösung

i got help from the hadoop mailing list. my problem was with the line below.

FileInputFormat.addInputPath(job, input);

this line simply appends input back to config. after commenting this line out, the input file is read only once now. in fact, i also commented out the other line,

FileOutputFormat.setOutputPath(job, output);

and everything still works.

Andere Tipps

I've had a similar problem, but for a different reason: linux apparently created a hidden copy of my input file (~input.txt), so that's a second way of getting this error..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top