Я написал Mapper и Reducer в Python и успешно выполнил его на Elastic MapReduce (EMR) Amazon, используя Hadoop Streaming.Объединить выходные файлы задания MapReduce
Папка конечного результата содержит выход в трех разных файлах part-00000, part-00001 и part-00002. Но мне нужен вывод как один файл. Есть ли способ, которым я могу это сделать?
Вот мой код Mapper:
#!/usr/bin/env python
import sys
for line in sys.stdin:
line = line.strip()
words = line.split()
for word in words:
print '%s\t%s' % (word, 1)
И вот мой код Reducer
#!/usr/bin/env python
from operator import itemgetter
import sys
current_word = None
current_count = 0
word = None
max_count=0
for line in sys.stdin:
line = line.strip()
word, count = line.split('\t', 1)
try:
count = int(count)
except ValueError:
continue
if current_word == word:
current_count += count
else:
if current_word:
# write result to STDOUT
if current_word[0] != '@':
print '%s\t%d' % (current_word, current_count)
if count > max_count:
max_count = count
current_count = count
current_word = word
if current_word == word:
print '%s\t%s' % (current_word, current_count)
мне нужен выход это как один файл.
Не можете ли вы просто открыть три файла и объединить их в один выходной файл? –
Вот что я делаю. Но мне бы хотелось, если бы я смог получить один выходной файл после фазы «Уменьшить». –
Не могли бы вы просто (* Linux/UNIX *): '' cat part-00000 part-00001 part-00002> output''? –