为了账号安全,请及时绑定邮箱和手机立即绑定

操作 reduce() MapReduce 模型

操作 reduce() MapReduce 模型

SMILET 2021-07-02 14:00:35
我一直在研究一个简单的 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 语句之外,我想不出任何其他内容。我真的很感激一些建议。
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

count 是一个可迭代的,你要迭代它两次,第二次它是空的,总和为零。


您需要存储结果,然后检查并输出。否则,逻辑是正确的


def reducer(self, word, count):

   _count = sum(count)

   if _count > 10:

       emit(word, _count)


查看完整回答
反对 回复 2021-07-13
?
Helenr

TA贡献1780条经验 获得超3个赞

您可以尝试以下内容:


def threshold(x, y, n=10):

    return True if y >= n else False


filter(threshold, reducer)


查看完整回答
反对 回复 2021-07-13
  • 2 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信