我试图运行hadoop作业来进行单词重排,由于存储空间用完,我所有的节点很快都处于不正常状态。
这是我的映射器部分:
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))
据我了解,“打印”将在每个占用存储空间的节点上生成临时文件。如果我以txt文件为例:
cat README.txt |./shingle_mapper.py >> temp.txt
我可以看到原始和临时文件的大小:
-rw-r--r-- 1个根目录1366 Nov 13 02:46 README.txt
-rw-r--r-- 1个根目录9744 Nov 14 01:43 temp.txt
临时文件的大小是输入文件的7倍,所以我想这是我的每个节点都用完所有存储的原因。
我的问题是我能正确理解临时文件吗?如果是这样,还有什么更好的方法来减少临时文件的大小(增加存储空间对我来说不是一种选择)?