Hadoop plusieurs entrées

Je suis en utilisant hadoop map réduire et je veux calculer les deux fichiers. Ma première Map/reduce itération est de me donner un fichier avec une paire numéro d'ID comme ceci:

A 30
D 20

Mon objectif est d'utiliser cet ID dans le fichier à associer avec un autre fichier et avoir une autre sortie avec un trio: ID, le Numéro, le Nom, comme ceci:

A ABC 30
D EFGH 20

Mais je ne suis pas sûr que ce soit en utilisant la Carte de Réduire les est la meilleure façon de le faire. Serait-il préférable par exemple d'utiliser un Lecteur de Fichiers pour Lire le deuxième fichier d'entrée et obtenir le Nom par ID? Ou puis-je le faire avec la Carte de Réduire?

Si oui, j'essaie de trouver comment. J'ai essayé un MultipleInput solution:

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

Mais je ne peux pas penser à une solution pour combiner les deux et obtenir le résultat que je veux. La façon dont j'ai droit maintenant, c'est juste de me donner la liste comme dans cet exemple:

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

Après mon Dernier Réduire j'obtiens ceci:

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

Ce que je veux c': N127DL 7 767-332. Et aussi, je ne veux pas que ceux qui ne se combinent pas.

Et c'est ma réduire classe:

public class FlightsByCarrierReducer2 s'étend Réducteur {

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));

}

}

Mise à jour:

http://stat-computing.org/dataexpo/2009/the-data.html c'est l'exemple que j'utilise.

Je suis en train d'essayer avec: TailNum et Annulée, ce qui est (1 ou 0) obtenir le nom du modèle qui correspond à la TailNum. Mon fichier avec le modèle a un TailNumb, Modèle et d'autres choses. Ma courant de sortie est:

N193JB ERJ 190-100 IGW

N194DN 767-332

N19503 EMB-135ER

N19554 EMB-145LR

N195DN 767-332

N195DN 2

Première vient de la clé, le deuxième le modèle, les clés qui a des vols annulés, apperas ci-dessous le modèle

Et je voudrais un trio Clé,le Numéro de Modèle de Annulée, Parce que je veux le nombre d'Annulations par modèle

quelles sont les tailles des deux fichiers d'entrée ?
la première autour de 600k entrées, la seconde autour de 2k
dire second fichier a la longueur de la ligne 100 octets en moyenne, alors la taille totale sera d'environ 200k. Je suppose que u peut le mettre dans DistributedCache pour effectuer une carte côté de jointure et d'économiser du carburant 😉
U peut pastebin 2 entrées que vous essayez de les regrouper? Qu'est-ce que N125DL...etc
veuillez lire la mise à jour

OriginalL'auteur dex90 | 2014-12-08