Потоковое задание Hadoop создает огромные временные файлы - PullRequest
0 голосов
/ 14 ноября 2018

Я пытался запустить задание hadoop, чтобы выполнить слово shingling, и все мои узлы вскоре перешли в неработоспособное состояние, так как хранилище израсходовано.

Вот моя часть отображения:

shingle = 5

for line in sys.stdin:
# remove leading and trailing whitespace
line = line.strip()

for i in range(0, len(line)-shingle+1):
    print ('%s\t%s' % (line[i:i+shingle], 1))

Насколько я понимаю, «print» будет генерировать временный файл на каждом узле, который занимает пространство строба.Если взять в качестве примера txt-файл:

cat README.txt |./shingle_mapper.py >> temp.txt

, я вижу размер исходного и временного файла:

-rw-r - r-- 1 корневой корень 136613 ноября 02:46 README.txt

-rw-r - r-- 1 корневой корень 9744 14 ноября 01:43 temp.txt

Размер временного файла в 7 раз большевходной файл, поэтому я думаю, что это причина того, что каждый мой узел израсходовал все хранилище.

Мой вопрос: правильно ли я понимаю временный файл?Если да, то есть ли лучший способ уменьшить размер временных файлов (для меня добавление дополнительного хранилища не вариант)?

...