¿Cómo puedo controlar el nombre y el contenido de un trabajo de transmisión de archivos de salida Hadoop?
-
23-08-2019 - |
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?
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.