猿问

操作 reduce() MapReduce 模型

我一直在研究一个简单的 wordcount 程序,该程序在输入文本时打印出每个单词的出现次数。


reduce 函数如下所示:


def reducer(self, word, count):

    yield(word, sum(count))

上面的 reducer() 可以正确地计算输入文本文件中每个单词的出现次数。


现在,我想调整 reduce() 函数,以便在输出文件中只打印出现 10 次或更多的单词。我想,它可能是这样的:


def reducer(self, word, count):

   if sum(count)>10:

        emit(word,sum(count))

然而这行不通。相反,生成的输出文件按每个单词打印 0。我很确定 reducer() 函数需要调整,而不是 map 函数。但是,除了包含 if 语句之外,我想不出任何其他内容。我真的很感激一些建议。


SMILET
浏览 137回答 2
2回答

慕标5832272

count 是一个可迭代的,你要迭代它两次,第二次它是空的,总和为零。您需要存储结果,然后检查并输出。否则,逻辑是正确的def reducer(self, word, count):   _count = sum(count)   if _count > 10:       emit(word, _count)

Helenr

您可以尝试以下内容:def threshold(x, y, n=10):    return True if y >= n else Falsefilter(threshold, reducer)
随时随地看视频慕课网APP

相关分类

Python
我要回答