Transmisión de Hadoop: elimine la pestaña final de la salida del reductor

Tengo un trabajo de transmisión en hadoop cuya salida no contiene pares clave / valor. Se puede considerar como pares de solo valor o pares de solo clave.

Mi reductor de transmisión (un script php) está generando registros separados por líneas nuevas. La transmisión de Hadoop trata esto como una clave sin valor e inserta una pestaña antes de la nueva línea. Esta pestaña extra no es deseada.

¿Cómo lo elimino?

Estoy usando hadoop 1.0.3 con AWS EMR. Descargué la fuente de hadoop 1.0.3 y encontré este código en hadoop-1.0.3 / src / contrib / streaming / src / java / org / apache / hadoop / streaming / PipeReducer.java:

reduceOutFieldSeparator = job_.get("stream.reduce.output.field.separator", "\t").getBytes("UTF-8");

Así que traté de pasar-D stream.reduce.output.field.separator= Como un argumento al trabajo sin suerte. Yo tambien lo intenté-D mapred.textoutputformat.separator= y-D mapreduce.output.textoutputformat.separator= sin suerte

He buscado en google por supuesto y nada de lo que encontré funcionó. Un resultado de la búsqueda incluso indicó que no había ningún argumento que pudiera pasarse para lograr el resultado deseado (sin embargo, la versión de hadoop en ese caso era realmente muy antigua).

Aquí está mi código (con saltos de línea agregados para facilitar la lectura):

hadoop jar streaming.jar -files s3n://path/to/a/file.json#file.json
    -D mapred.output.compress=true -D stream.reduce.output.field.separator=
    -input s3n://path/to/some/input/*/* -output hdfs:///path/to/output/dir
    -mapper 'php my_mapper.php' -reducer 'php my_reducer.php'

Respuestas a la pregunta(3)

Su respuesta a la pregunta