Потоковая передача Hadoop - удаление конечной вкладки с выхода редуктора

У меня есть потоковое задание Hadoop, вывод которого не содержит пары ключ / значение. Вы можете думать об этом как о парах только для значений или пар только для ключей.

Мой потоковый редуктор (скрипт php) выводит записи, разделенные переводами строки. Потоковая передача Hadoop рассматривает это как ключ без значения и вставляет вкладку перед новой строкой. Эта дополнительная вкладка нежелательна.

Как мне это убрать?

Я использую hadoop 1.0.3 с AWS EMR. Я скачал источник hadoop 1.0.3 и нашел этот код в 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");

Поэтому я попытался передать-D stream.reduce.output.field.separator= как аргумент к работе без удачи. Я тоже пробовал-D mapred.textoutputformat.separator= а также-D mapreduce.output.textoutputformat.separator= без удачи

Я искал в Google, конечно, и ничего, что я нашел, не сработало. В одном из результатов поиска даже указывалось, что не было аргумента, который можно было бы передать для достижения желаемого результата (хотя версия hadoop в этом случае была действительно очень старой).

Вот мой код (с добавлением разрывов строк для удобства чтения):

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'