[英]How to create user specific file with unique name in the reducer phase of Hadoop Map Reduce Framework(In Python))
我为减速器编写了一个代码,该代码将读取映射器的输出。 然后,它将创建一个具有键名的新文件,并且对应于同一键的所有值都将存储到一个文件中。
我的代码是:
!/usr/bin/env python
import sys
last_key = None #initialize these variables
for input_line in sys.stdin:
input_line = input_line.strip()
data = input_line.split("\t")
this_key = data[0]
if len(data) == 2:
value = data[1]
else:
value = None
if last_key == this_key:
if value:
fp.write('{0}\n'.format(value))
else:
if last_key:
fp.close()
fp = open('%s.txt' %this_key,'a')
if value:
fp.write('{0}\n'.format(value))
if not last_key:
fp = open('%s.txt' %this_key,'a')
if value:
fp.write('{0}\n'.format(value))
last_key = this_key
但是它没有创建任何文件。
因此,我的问题是我需要使用什么功能来将新文件创建到HDFS中。
没有简单的解决方案可以实现此目标。您可以按照以下方法使用Mapreduce实现此目标:
方法1:使用分区程序
方法2:如果文件数很少,则使用MultipleOutputs 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.