Входной текст как таковой повторяется миллиард раз:
value1 | foo="bar" value2 | value3
Я написал базовый сопоставитель на питоне для базовой потоковой работы:
#!/usr/bin/env python
import sys
for line in sys.stdin:
line = line.replace('foo=','')
line = line.replace('"','') # kills double-quotes
print line
# alternatively, I have tried print >>sys.stdout, line
Я выполняю работу как таковую; он работает без ошибок, но выходной файл пуст:
bin/hadoop jar contrib/streaming/hadoop-streaming.jar -file ~/mapper1.py -mapper mapper1.py -input hdfs:///rawdata/0208head.txt -output hdfs:///rawdata/clean0208.txt
Я предположил, что без картографа печать будет просто печатать в выходной файл. Теперь я подозреваю, что команда печати просто печатает вывод в память каждой JavaVM, и без какого-либо явного способа записать его обратно он просто умирает в виртуальной машине.
Я написал базовый редюсер, который просто взял sys.stdin и напечатал в sys.stdout, как указано выше в «#alternatively». Это тоже не сработало.
Руководство приветствуется. Спасибо