Hadoop mehrere Eingänge

Ich benutze Hadoop Map Reduce und möchte zwei Dateien berechnen. Meine erste Map / Reduce-Iteration gibt mir eine Datei mit einer Paar-ID-Nummer wie folgt:

A 30
D 20

Mein Ziel ist es, diese ID aus der Datei zu verwenden, um sie einer anderen Datei zuzuordnen und eine andere Ausgabe mit einem Trio zu erhalten: ID, Nummer, Name, wie folgt:

A ABC 30
D EFGH 20

Aber ich bin nicht sicher, ob die Verwendung von Map Reduce der beste Weg ist, dies zu tun. Wäre es beispielsweise besser, einen Dateireader zu verwenden, um die zweite Eingabedatei zu lesen und den Namen anhand der ID abzurufen? Oder kann ich das mit Map Reduce machen?

enn ja, versuche ich herauszufinden, wie. Ich habe eine MultipleInput-Lösung ausprobiert:

MultipleInputs.addInputPath(job2, new Path(args[1]+"-tmp"),
    TextInputFormat.class, FlightsByCarrierMapper2.class);
MultipleInputs.addInputPath(job2, new Path("inputplanes"),
    TextInputFormat.class, FlightsModeMapper.class); 

Aber ich kann mir keine Lösung vorstellen, um die beiden zu kombinieren und die gewünschte Ausgabe zu erhalten. So wie ich es jetzt habe, gebe ich mir nur die folgende Liste:

A ABC
A 30
B ABCD
C ABCDEF
D EFGH
D 20

Nach meiner letzten Reduzierung erhalte ich Folgendes:

N125DL  767-332
N125DL  7   , 
N126AT  737-76N
N126AT  19  , 
N126DL  767-332
N126DL  1   , 
N127DL  767-332
N127DL  7   , 
N128DL  767-332
N128DL  3

Ich möchte dies: N127DL 7 767-332. Und ich möchte auch nicht diejenigen, die sich nicht kombinieren lassen.

Und das ist meine Reduce-Klasse:

public class FlightsByCarrierReducer2 erweitert Reducer

String merge = "";
protected void reduce(Text token, Iterable<Text> values, Context context) 
                            throws IOException, InterruptedException {

    int i = 0;  
    for(Text value:values)
    {
        if(i == 0){
            merge = value.toString()+",";
        }
        else{
            merge += value.toString();
        }
        i++;
    }

        context.write(token, new Text(merge));

}

}

Aktualisieren

http: //stat-computing.org/dataexpo/2009/the-data.htm Dies ist das Beispiel, das ich verwende.

Ich versuche es mit: TailNum und Cancelled, die (1 oder 0) den Modellnamen erhalten, der der TailNum entspricht. Meine Datei mit model hat ein TailNumb, Model und andere Sachen. Meine aktuelle Ausgabe ist:

N193JB ERJ 190-100 IGW

N194DN 767-332

N19503 EMB-135ER

N19554 EMB-145LR

N195DN 767-332

N195DN 2

Zuerst kommt der Schlüssel, dann das Modell, die Schlüssel, bei denen Flüge storniert wurden, erscheinen unterhalb des Modells

Und ich hätte gerne einen Trio-Schlüssel mit der Modellnummer Storniert, weil ich die Anzahl der Stornierungen pro Modell haben möchte

Antworten auf die Frage(4)

Ihre Antwort auf die Frage