2012-06-14 8 views
11

Creo que el título ya está explicando mi pregunta. Me gustaría cambiarHadoop: la clave y el valor están separados por tabulaciones en el archivo de salida. ¿cómo hacerlo separados por punto y coma?

key (tab space) value 

en

key;value 

en todos los archivos de salida de los reductores están generando desde la salida de creadores de mapas.

No pude encontrar buena documentación sobre esto usando Google. ¿Alguien puede dar una fracción de código sobre cómo lograr esto?

+0

qué versión (0.20.2, 0.20.20x, 1.0.x, 2.0.0?) Y de distribución (Apache, Cloudera?) de hadoop estás usando –

+0

¿Qué estás usando como clase de formato de salida: 'oahmapred.TextOutputFormat', o' oahmapreduce.lib.output.TextOutputFormat'? –

Respuesta

18

Establecer la propiedad de configuración mapred.textoutputformat.separator a ";"

+0

Hola Chris ... ¿está bien para lo que he especificado ??? – Tariq

+1

debe ser mapreduce.output.textoutputformat.separator si está utilizando la nueva API – Tariq

+0

1.0.0 aún muestra 'mapred.textoutputformat.separator' en su fuente para' oahmapreduce.lib.output.TextOutputFormat' - http: // svn.apache.org/viewvc/hadoop/common/tags/release-1.0.0/src/mapred/org/apache/hadoop/mapreduce/lib/output/TextOutputFormat.java?view=markup, línea 115 –

1

puede utilizar la propiedad "KEY_VALUE_SEPERATOR" de "KeyValueLineRecordReader" para especificar un separador de su elección.

+1

Esta propiedad se puede configurar al leer los datos, pero no se usa para la salida –

+0

gracias Chris. – Tariq

14

En la falta de una mejor documentación, esto es lo que he recogido:

setTextOutputFormatSeparator(final Job job, final String separator){ 
      final Configuration conf = job.getConfiguration(); //ensure accurate config ref 

      conf.set("mapred.textoutputformat.separator", separator); //Prior to Hadoop 2 (YARN) 
      conf.set("mapreduce.textoutputformat.separator", separator); //Hadoop v2+ (YARN) 
      conf.set("mapreduce.output.textoutputformat.separator", separator); 
      conf.set("mapreduce.output.key.field.separator", separator); 
      conf.set("mapred.textoutputformat.separatorText", separator); // ? 
    } 
Cuestiones relacionadas