Я подозреваю, что ваша проблема лежит где-то в следующем источнике:
http://svn.apache.org/viewvc/hadoop/common/tags/release-0.20.2/src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeMapRed.java?view=markup
строка 69 splitArgs()
метод, который токенизирует команду, которую вы передали:
python /code/triples-mapper.py | sort | python /code/triples-reducer.py
в команду для запуска: /code/triples-mapper.py
(строка 131/132), а затем набор передаваемых аргументов. Все токены передаются в ProcessBuilder (строка 164)
Java Api для ProcessBuilder
Таким образом, ваши каналы не интерпретируются ОС, более передаются в качестве аргументов вашему преобразователю (вы должны быть в состоянии подтвердить это, выгрузив аргументыпередан в код вашего картографа) * 1019 *
Это все для 0.20.2, поэтому, возможно, оно было «исправлено» для соответствия вашим целям в более поздней версии hadoop.