2016-04-20 3 views
0

Ich habe n Anzahl von Dateien, und ich muss diese Dateien zusammenführen (nur mit Karte reduzieren Code) zum Beispiel nehme ich 2 Beispieldateien. wie n Dateien mit mapreduce code verschmelzen?

Datei 1.txt

Dateien geöffnet ist Datei 1.txt diese die Daten in file1.txt ist

.

Datei 2.txt

Dateien geöffnet ist Datei 2.txt diese die Daten in file2.txt

ist ich diese beiden Dateien und die erwartete Ausgabe fusionieren sein müssen eine part_0001 Datei von Minderer Kombination Dateien beide

geöffnet 1.txt dieser Datei zu sein erwartet, ist die Daten in file1.txt

geöffneten Dateien Datei ist 2.txt diese die Daten in file2.txt ist

ich weiß, dass dies leicht erreicht hadoop -getmerge mit sein kann, aber ich brauche einen einfachen mapreduce Job für mich zu arbeiten.

kann mir jemand mit der Logik helfen, die ich für den Mapper und den Reducer folgen muss (was muss der Schlüssel und die Werte sein, die in Mapper und Reducer gesetzt werden müssen) ??

+0

können Sie auch den Shell-Befehl 'hadoop dfs -cat' verwenden – vefthym

+0

Sie können dies einfach mithilfe von Hive erreichen. Laden Sie diese Dateien einfach in eine Hive-Tabelle und erstellen Sie eine zweite Datei mit create table table2, indem Sie * aus Tabelle 1 auswählen; Dies funktioniert ohne zusätzliche Einstellungen gut, wenn die Gesamtgröße der Dateien weniger als die Größe der Splits beträgt. –

Antwort

0

Sie können dies auf verschiedene Arten tun. mit create table table2 as select

1) einen Bienenstock Abfrage

Gerade diese Dateien in einem Bienenstock Tabelle laden und eine zweite Datei erstellen * aus Tabelle 1; Dies funktioniert ohne zusätzliche Einstellungen gut, wenn die Gesamtgröße der Dateien weniger als die Größe der Splits beträgt. Wenn die Dateigrößen größer sind, legen Sie die folgenden Eigenschaften fest und führen Sie die Abfrage aus. set mapreduce.reduce.tasks = 1; set hive.exe.reducers.max = 1;

2) ein Programm mapreduce

In der Mapper-Klasse verwenden, stellen den Schlüssel als 1 und Wert als Text. Dies stellt sicher, dass alle Daten zu einem einzigen Reduzierer gelangen. Schreiben Sie dann in der Reducer-Klasse den Text allein und lassen Sie den Schlüssel weg.