【问题标题】:Hadoop combiner : Using same reducer code as combiner in a word count mapreduce program?Hadoop组合器:在字数mapreduce程序中使用与组合器相同的reducer代码?
【发布时间】:2014-03-07 00:28:13
【问题描述】:

这个来自认证机构的实践测试的问题对我来说没有意义。有人可以帮忙吗?

问题:
映射器发出键和值对的字数问题,其中对于每个作为键的单词,文字 1 作为值发出。然后,reducer 为它收到的每个文字“1”增加一个计数器。 qn 是“我们可以使用现有的 reducer 代码作为组合器吗”?

正确答案如图所示。 "YES" ,我们可以,因为 sum 任务是可交换的和关联的。

但我的理解是,答案应该是“否”,因为这两种情况会导致两个不同的答案。而且我相信相同的 reducer 和 combiner 代码只有在我们使用另一种方法来增加计数器的值时才能使用,而不是“为它收到的每个字面量 1 增加一个计数器”。

举个例子 让我们先考虑一个没有组合器的假设情况 例如假设 map1 o/p 是 (to,1), (to,1) 和 map2 o/p 是 (to,1) 然后 i/p 到 reducer 变为 (to, [1,1,1]) 然后减速器 o/p 变为 (to,3)

但是对于组合器,当 map1 o/p 被馈送到组合器时,组合器 o/p 变为 (to,2)。减速器 i /p 现在变为 (to, [2,1])。然后在 reducer 中,我们只增加计数器,并且只为每个字面量 1 值增加,即我们丢弃字面量 2,然后 o/p 变为 (to,1)

使用组合器时,o/p 为 (to,1),而没有组合器时,o/p 为 (to,3)。

请帮助我,如果我在某处有问题或其他方面有问题?

提前感谢您的回答, 比卡尔篮子

【问题讨论】:

  • 听起来写模拟测试的人需要自己练习一下
  • 我认为你是对的

标签: hadoop word-count combiners


【解决方案1】:

您的理解是正确的,但是在经典的 MapReduce 字数统计应用程序中,reducer 可以用作组合器。查看WordCount 中的第 37 行。它是:

sum += val.get();

而不是:

sum += 1;

【讨论】:

  • 完全同意您对经典地图缩减程序的看法。但是练习题考虑了后一种情况,sum += 1,并主张使用reducer作为combiner。我在那里很困惑。还是谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多