Я запускаю программу Hadoop и имею следующий входной файл, input.txt:
1
2
mapper.py:
import sys
for line in sys.stdin:
print line,
print "Test"
reducer.py:
import sys
for line in sys.stdin:
print line,
Когда я запускаю его без Hadoop: $ cat ./input.txt | ./mapper.py | ./reducer.py вывод соответствует ожидаемому:
1
2
Test
Однако запуск его через Hadoop через потоковый API (как описано здесь), последняя часть вывода кажется несколько "удвоенной":
1
2
Test
Test
Кроме того, когда я запускаю программу через Hadoop, кажется, что вероятность сбоя составляет 1/4 из-за этого:
Ошибка: количество невыполненных задач карты превысило допустимый предел. Количество отказов: 1.
Я смотрел на это в течение некоторого времени и не могу понять, что я не получаю. Если кто-то может помочь с этими проблемами, буду очень признателен! Спасибо.
редактировать: когда input.txt:
1
2
3
4
5
6
7
8
9
10
Результат:
1
10
2
3
4
5
6
7
8
9
Test
Test
bin/hadoop jar contrib/streaming/hadoop-streaming.jar \ -file /hadoop/mapper.py -mapper mapper.py -file /hadoop/reducer.py -reducer reducer.py -input /hadoop/input.txt -output /hadoop/output
)? - person cabad   schedule 03.10.20131,2,Test,Test
с запятыми, обозначающими разрывы строк. - person Objc55   schedule 04.10.2013stdout
). - person cabad   schedule 04.10.2013Total input paths to process : 1
- person Objc55   schedule 05.10.2013