为什么在MapReduce中需要Reduce?如果一项工作(例如统计书中单词的数量)将导致相同的结果(如果由单个流程执行或MapReduced在服务器场中执行),那么重复项必须被删除的可能性有多大?我假定Reduce步骤,至少在本例中,将简单地汇总来自每个工作进程的结果并提供本书中单词的总数。我不明白哪里有重复的东西出现在图片中。是否总是需要删除MapReduce中的重复项?
1
A
回答
1
Reduce步骤并不意味着删除重复项(尽管在某些情况下这是一个可能的用例)。 Reduce是为了汇总来自不同映射器的输出而使用相同的密钥。
例如,在单词计数示例中,节点1可能会得到一个单词的10个实例,例如“school”,节点2可能有15个实例,节点3 12个实例。现在如何计算总和?结果10,15和12在不同的节点上。有一个随机播放阶段,将所有这些值带到一个节点(这是分区器分配给关键“学校”的缩减器)。然后减速器将具有该键的所有值,并且可以将它们相加。
编辑:由于铎提到的,通过聚集我的意思是“汇集”
EDIT2的更一般意义上的聚集:为了澄清RaffiM的疑问: 继续上面的例子,假设节点1有1页10,节点2有11-20页,节点3有21-30页。因此,在毛泽东之后,我们知道Pages 1-10有10次单词“school”,11-20页有15次出现,15-30次出现在第21-30页。现在我们需要的是这个词在整本书中出现的总次数,所以我们仍然需要添加这些词。我们需要10 + 15 + 12 +其他页面范围的数字......
如果您不使用组合器,则映射器每次出现该单词时都会发送“1”。因此,对于1-10页,它将发送<“学校”,1>作为输出键值10次。为了提高效率,我们使用组合器,在映射器级别对其进行汇总。因此,如果您使用组合器,它将在节点1本身中消耗此资源,并为节点1生成合并输出<“学校”,10>。
5
减少是一种更为普遍的操作。这并不一定意味着“通过重复应用操作(例如求和)来聚合一堆数值”。的正式定义地图,减少是,它是一个以下阶段组成的转化:
Map: (K k, V v) -> (K' k, V' v1 [, v2,...])
- 即在输入有一个键 - 值对分别类型K和V,的操作,并产生一个密钥可能不同类型的值的值或键列表结果。- 执行分区的混洗阶段。
Reduce: (K' k, V' v1 [, v2,...]) -> (K' k, V'' v1 [, v2,...])
- 一种操作,用于输入值对的键值列表,其中“值列表”是由Map
阶段生成的与键k相对应的所有值的列表,并生成键值或键值。值列表配对,其中输出密钥必须与输入密钥具有相同的类型,并且该值为任意类型。
这样,您会发现Reduce操作更加灵活和一般。
相关问题
- 1. 此代码是否删除重复项?
- 2. 我是否需要删除此对象?
- 3. 是否需要删除静态向量?
- 4. 我是否需要删除对象?
- 5. 复合布局是否总是需要它自己的类?
- 6. jquery .add()是否从新列表中删除重复项?
- 7. 需要帮助,以正确删除NHibernate中的重复项
- 8. 需要删除一个项目类型重复的行而不是其他
- 9. Ajax是否总是需要使用node.js?
- 10. 是否JAXB总是需要XSD
- 11. SOAP是否总是需要WSDL?
- 12. gzip是否总是需要扩展名?
- 13. 是否总是需要创建Dim表?
- 14. PHP是否总是需要连接?
- 15. 过程是否总是需要终止?
- 16. 使用MapReduce删除重复的记录
- 17. 删除Python中的重复项Pandas DataFrame不删除重复项
- 18. 删除和汇总重复项
- 19. 如果我有运算符T *(),是否需要重载删除?
- 20. 在插入前检查重复项时是否需要事务?
- 21. getpwnam_r()是否需要重入?
- 22. 是否需要重置CSS?
- 23. 如何删除重复项是否正确?
- 24. 当变量是本地时是否需要删除?
- 25. 是否需要从协会的双方中删除?
- 26. dbus总是需要总线
- 27. 删除重复项
- 28. 删除重复项
- 29. 从数据库中删除重复的联系人,但不在分组重复中总是保留主要
- 30. 总是需要清除缓存
在本书的例子中,为什么不发送页面范围到一个节点,节点统计该页面范围内的所有单词..没有比发送单个单词更有效吗? – raffian 2012-03-01 17:28:29
这正是发生的情况。但是我们需要整本书中每个单词的计数,而不是特定的页面范围。我会在答案中增加更多细节以使其更清楚。 – 2012-03-01 17:45:14
我还是不明白......我们不计算单个词的出现,只是总词。 – raffian 2012-03-03 01:06:16