【发布时间】:2012-05-06 18:47:17
【问题描述】:
如果有 20 个单词要数。每 5 个单词一组,这些组由不同的计算机节点处理。那么,如果“boy”这个词出现了两次,但是又分成了不同的组,那么Map/Redude是用什么样的算法来得到“boy”这个词的实际数量呢。
【问题讨论】:
标签: algorithm map count word reduce
如果有 20 个单词要数。每 5 个单词一组,这些组由不同的计算机节点处理。那么,如果“boy”这个词出现了两次,但是又分成了不同的组,那么Map/Redude是用什么样的算法来得到“boy”这个词的实际数量呢。
【问题讨论】:
标签: algorithm map count word reduce
在此示例中,使用 Map/Reduce 计算此值的最明显方法是每个映射器获取 5 个单词,然后将单词发送给 reducer。单词将在 reducer 之间拆分,因此 reducer 1 获得所有“boy”单词,reducer 2 获得所有“the”单词等,然后 reducer 可以简单地总结它收到的单词以获得出现次数那个词。
Hadoop 文档中有一个示例:http://hadoop.apache.org/common/docs/current/mapred_tutorial.html#Example%3A+WordCount+v1.0
【讨论】:
这就是 MapReduce 中的 reduce。主节点将获取每个子组中的出现计数,并通过添加每个单词的出现来组合它们。因此,如果有四个组,并且 'boy' 在其中两个中出现一次,每个组中出现一次,它将通过将出现次数相加来组合它们,得到总共 1+1+0+0=2。
【讨论】: