尤其是认证机构的实践测试中的这个问题对我来说毫无意义。有人可以帮忙吗?

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

正确答案描述为。 "is",由于求和任务是可交换的和关联的,所以我们可以。

但是我的理解是,答案应该为“否”,因为这两种情况会导致两个差异答案。而且我相信只有在以下情况下可以使用相同的化简器和组合器代码,而不是“为接收到的每个文字1增加一个计数器”,而是采用另一种方法来增加其接收到的值。

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

但是对于组合器,将map1 o / p馈送到组合器时,组合器o / p变为(to,2)。 reducer i / p现在变为(to,[2,1])。然后在reducer中,我们仅对每个文字1的值增加计数器,即我们丢弃文字2,然后o / p变为(to,1)

使用组合器,o / p为(to,1),没有组合器,我们将看到o / p为(to,3)。

请帮助我,如果我在某处错了,否则?

预先感谢您的回答,
比卡尔·巴斯内特(Bikal Basnet)

最佳答案

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

sum += val.get();

并不是:
sum += 1;

关于hadoop - Hadoop组合器:在单词计数mapreduce程序中使用与组合器相同的缩减器代码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21664252/

10-12 23:03