2014-02-09 81 views
0

特别是来自认证机构的实践测试的这个问题对我来说没有意义。谁能帮忙?Hadoop组合器:在字数mapreduce程序中使用与组合器相同的缩减器代码?

问题:
字数问题映射器发射键和值的对,其中对于每个词作为键,文字1被发射作为value.Then减速递增每个文字的计数器“1”的接收。 qn是“我们可以使用现有的减速器代码作为组合器”吗?

正确的答案描述为。 “是”,因为总和任务是可交换和关联的。

但我的理解是,答案应该是“否”,因为这两种情况导致两个差异答案。我相信相同的减速器和组合器代码只能用于代替“为它接收的每个字面量增加一个计数器”,我们采用另一种方法来增加计数器的值。

与示例 考虑到这让我们考虑一个假想的情况下不组合第一 例如假设MAP1 O/P为(于,1),(于1)和MAP2 O/P为(于1) 然后减速器的I/P变为([1,1,1]) 减速器o/p然后变为(到3)

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

对于组合器,o/p是(to,1)和没有组合器,我们看到o/p是(to,3)。

请帮助我,如果我在这个地方或其他地方有错吗?

请多关照你的答案, 比考尔巴斯内特

+0

听起来像是谁写了实践的检验,需要的一些练习他/她自己的 –

+0

我想你是对 – michaeltang

回答

2

你的理解是正确的,但是在经典的MapReduce字数应用,减速机可作为组合。看看WordCount中的第37行。它是:

sum += val.get(); 

而不是:

sum += 1; 
+0

完全同意你关于这个的经典之作地图减少程序。但实践问题考虑后一种情况,sum + = 1,并认为使用reducer作为组合器。那里我很困惑。不管怎么说,还是要谢谢你 – user2961928