Mapreduce。。。上大学课程

Mapreduce。。。上大学课程,mapreduce,Mapreduce,作为udacity课程的一部分,我应该编写一个映射器和一个reducer函数。 我的映射器函数如下所示。。我很确定它是有效的: 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]) 映射器() 我的减速机函数不知

作为udacity课程的一部分,我应该编写一个映射器和一个reducer函数。 我的映射器函数如下所示。。我很确定它是有效的:

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])
映射器()

我的减速机函数不知何故无法正确相加:

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)
减速机()


这里缺少什么?

您正在将每个输入行的计数设置为零
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)