0

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

问题:
mapper 发出键和值对的字数问题,其中每个单词作为键,文字 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]) reducer 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)。

请帮助我,如果我在某个地方错了,或者如果不是这样?

提前感谢您的回答,Bikal Basnet

4

1 回答 1

2

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

sum += val.get();

并不是:

sum += 1;
于 2014-02-10T03:15:35.053 回答