Come faccio a controllare il nome file di output e il contenuto di un lavoro di streaming Hadoop?

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

Domanda

C'è un modo per controllare i nomi dei file di uscita di un lavoro Hadoop in Streaming? In particolare vorrei contenuti i file di output del mio lavoro e il nome deve essere organizzata dal KET uscite riduttore -. Ogni file dovrebbe contenere solo i valori per una chiave e il suo nome sarebbe la chiave

Aggiornamento: Appena trovato la risposta - Utilizzo di una classe Java che deriva dalla MultipleOutputFormat come formato di output di posti di lavoro permette il controllo dei nomi dei file di output. http: //hadoop.apache .org / core / docs / corrente / api / org / apache / hadoop / mapred / lib / MultipleOutputFormat.html

Non ho visto i campioni di questo là fuori ... Chiunque può segnalare a un campione di Hadoop in streaming che fa uso di un formato di output personalizzato classe Java?

È stato utile?

Soluzione

Utilizzo di una classe Java che deriva dalla MultipleOutputFormat come formato di output di posti di lavoro permette il controllo dei nomi dei file di output. http: //hadoop.apache .org / core / docs / corrente / api / org / apache / hadoop / mapred / lib / MultipleOutputFormat.html

Quando si utilizza Hadoop in streaming, dal momento che solo un JAR è supportato in realtà si deve sborsare il vaso streaming e mettere le nuove classi formato di output in esso per lo streaming di posti di lavoro per essere in grado di fare riferimento a esso ...

EDIT: A partire dalla versione 0.20.2 di Hadoop questa classe è stato deprecato e ora si dovrebbe usare: http: // Hadoop .apache.org / docs / MapReduce / corrente / api / org / apache / hadoop / MapReduce / lib / uscita / MultipleOutputs.html

Altri suggerimenti

In generale, Hadoop avrebbe si considera l'intera directory di essere l'uscita, e non un singolo file. Non c'è modo di controllare direttamente il nome del file, sia che si utilizzi in streaming o posti di lavoro regolari Java.

Tuttavia, nulla è ti impedisce di fare questo scissione e rinominare te stesso, dopo che il lavoro è terminato. È possibile $ DFS Hadoop -cat path / to / la vostra / uscita / directory / * parziale, e il tubo che a uno script di tuo che divide i contenuti da chiavi e lo scrive nuovi file.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top