Come faccio a controllare il nome file di output e il contenuto di un lavoro di streaming Hadoop?
-
23-08-2019 - |
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?
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.