我试图运行hadoop作业来执行shingling这个词,由于存储空间用完,我的所有节点很快就会进入不健康状态。
这是我的Map部分:
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根1366 11月13日02:46 readme.txt
-rw-r--r--1根9744 11月14日01:43 temp.txt
临时文件的大小是输入文件的7倍以上,所以我猜这就是我的每个节点都用光了所有存储的原因。
我的问题是我是否正确理解临时文件?如果是这样的话,有没有更好的方法来减少临时文件的大小(添加额外的存储不是我的选择)?
暂无答案!
目前还没有任何答案,快来回答吧!