¿Cómo puedo controlar el nombre y el contenido de un trabajo de transmisión de archivos de salida Hadoop?

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

Pregunta

¿Hay una manera de controlar los nombres de archivo de salida de un trabajo Hadoop Streaming? Específicamente me gustaría contenido de los archivos de salida de mi trabajo y el nombre que será organizado por el KET las salidas del reductor -. Cada archivo sólo contendría los valores de una clave y su nombre serían la clave

Actualización: Acaba de encontrar la respuesta - El uso de una clase Java que se deriva de MultipleOutputFormat como el formato de salida de puestos de trabajo permite el control de los nombres de archivo de salida. http: //hadoop.apache .org / core / docs / / corriente api / org / apache / hadoop / mapred / lib / MultipleOutputFormat.html

No he visto ninguna de las muestras de este por ahí ... ¿Puede alguien señalar a una muestra de Hadoop Transmisión de que hace uso de una clase Java formato de salida personalizado?

¿Fue útil?

Solución

El uso de una clase Java que se deriva de MultipleOutputFormat como el formato de salida de puestos de trabajo permite el control de los nombres de archivo de salida. http: //hadoop.apache .org / core / docs / / corriente api / org / apache / hadoop / mapred / lib / MultipleOutputFormat.html

Cuando se utiliza Hadoop Streaming, ya que sólo se admite un frasco que realmente tiene que desembolsar el frasco streaming y poner sus nuevas clases de formato de salida en el mismo para la transmisión de puestos de trabajo para poder hacer referencia a él ...

EDIT: Desde la versión 0.20.2 de hadoop esta clase ha quedado obsoleto y que ahora debe utilizar: http: // hadoop .apache.org / docs / mapreduce / corriente / api / org / apache / hadoop / mapreduce / lib / salida / MultipleOutputs.html

Otros consejos

En general, Hadoop tendría se tiene en cuenta todo el directorio a ser la salida, y no un archivo individual. No hay manera de controlar directamente el nombre del archivo, si el uso de streaming o trabajos regulares Java.

Sin embargo, nada le impide hacer esto la división y el cambio de nombre a sí mismo, después de que el trabajo ha terminado. Puede $ DFS Hadoop -gato ruta / a / su / salida / directorio / * parcial, y la tubería que a un guión suyo que divide el contenido por llaves y lo escribe en nuevos archivos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top