Mapreduce ...做一个udacity课程

时间:2015-03-10 18:11:13

标签: mapreduce

作为udacity课程的一部分,我应该编写一个mapper和reducer函数。 我的mapper函数看起来像这样......我很确定它的工作正常:

def mapper():
for line in sys.stdin:
    data= line.strip().split(",")
    #logging.info("{0}\t{1}".format(data[1],data[6]))
    print "{0}\t{1}".format(data[1],data[6])

映射器()

我的reducer函数以某种方式无法正确添加:

def reducer():
old_key=None
for line in sys.stdin:
    data= line.strip().split("\t")
    #logging.info(data)
 `   new_key=data[0] 
    ENTRIESn_hourly=data[1]
    count=0
    if new_key and new_key != ENTRIESn_hourly:
         print "{0}\t{1}".format(new_key,count)
    else:
         count+= int(ENTRIESn_hourly)

减速器()

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

您将每个输入行的计数设置为零。只有在您拥有新密钥时才会调用count=0,例如:

def reducer():
old_key=None
for line in sys.stdin:
    data= line.strip().split("\t")
    #logging.info(data)
 `   new_key=data[0] 
    ENTRIESn_hourly=data[1]
    if new_key and new_key != ENTRIESn_hourly:
         print "{0}\t{1}".format(new_key,count)
         count=0
    else:
         count+= int(ENTRIESn_hourly)