Sto usando hadoop map reduce e voglio calcolare due file. Il mio primo Map/Reduce iterazione sono io un dando un file con un numero di coppie ID come questo:Hadoop input multipli
A 30
D 20
Il mio obiettivo è quello di utilizzare tale ID dal file da associare a un altro file e hanno un'altra uscita con un trio: ID, numero, nome, in questo modo:
A ABC 30
D EFGH 20
Ma io non sono sicuro se utilizzando Map Reduce è il modo migliore per farlo. Sarebbe meglio ad esempio utilizzare un lettore di file per leggere il secondo file di input e ottenere il nome per ID? O posso farlo con Map Reduce?
Se è così, sto cercando di scoprire come. Ho cercato una soluzione MultipleInput:
MultipleInputs.addInputPath(job2, new Path(args[1]+"-tmp"),
TextInputFormat.class, FlightsByCarrierMapper2.class);
MultipleInputs.addInputPath(job2, new Path("inputplanes"),
TextInputFormat.class, FlightsModeMapper.class);
Ma non riesco a pensare a qualsiasi soluzione per combinare le due cose e ottenere il risultato che voglio. Il modo in cui ho in questo momento è solo mi dà la lista come in questo esempio:
A ABC
A 30
B ABCD
C ABCDEF
D EFGH
D 20
dopo il mio ultimo ridurre sto ottenendo questo:
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
voglio che questo: N127DL 7 767-332. E inoltre, non voglio quelli che non si combinano.
E questa è la mia classe di ridurre:
public class FlightsByCarrierReducer2 estende 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));
}
}
Aggiornamento:
http://stat-computing.org/dataexpo/2009/the-data.html questo è l'esempio che sto utilizzando .
Sto provando con: TailNum e Annullato che è (1 o 0) ottenere il nome del modello che corrisponde al TailNum. Il mio file con modello ha un TailNumb, Model e altre cose. La mia uscita in corrente è:
N193JB ERJ 190-100 IGW
N194DN 767-332
N19503 EMB-135ER
N19554 EMB-145LR
N195DN 767-332
N195DN 2
Prima viene la chiave, seconda il modello, le chiavi che ha voli cancellati, apperas sotto il modello
E vorrei una chiave trio, Modello Numero di Annullato, perché voglio numero di cancellazioni per modello
Quali sono le dimensioni previste di entrambi i file di input? – blackSmith
il primo circa 600k voci, il secondo intorno a 2k – dex90
dice che il secondo file ha una lunghezza della linea di 100 byte in media, quindi la dimensione totale sarà di circa 200k. Immagino che tu possa metterlo in "DistributedCache" per eseguire un join sul lato mappa e risparmiare un po 'di carburante ;-) – blackSmith