2009-12-22 107 views
12

我希望我以正确的方式提出这个问题。我正在学习使用Elastic MapReduce的方法,并且我已经看到许多对“聚合”缩减器的引用,它们可以与“流式处理”作业流程一起使用。弹性MapReduce中可用的减速器

在亚马逊的“介绍到亚马逊弹性MapReduce” PDF它指出:“亚马逊弹性MapReduce有一个名为汇集起来默认减速器”

我想知道的是:有其他默认减速availiable?

我明白我可以编写自己的reducer,但我不想最终写出已经存在的东西并“重新发明轮子”,因为我确信我的轮子不会像原版的。

回答

4

我处于类似的情况。我从谷歌的结果等推断,现在的答案是“不,Hadoop中没有其他默认减速器”,这很糟糕,因为默认减速器如“平均”或“中值”显然是有用的“所以你不必写自己的。

http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/lib/aggregate/package-summary.html显示了许多有用的聚合器用法,但我找不到文档介绍如何访问文档中和Erik Forsberg的答案中描述的非常基本的键/值之和以外的其他功能。也许这个功能只在Java API中公开,我不想使用它。

顺便提一下,恐怕Erik Forsberg的答案不是这个特定问题的好答案。另一个可能成为有用答案的问题是可以构建的,但这不是OP要求的。

8

他们指的减速机记录在这里:

http://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapred/lib/aggregate/package-summary.html

这是构建到流效用减速。它提供了一种通过编写输出按特殊方式格式化的键的映射器来执行常用计算的简单方法。

例如,如果你的映射器输出:

LongValueSum:id1\t12 
LongValueSum:id1\t13 
LongValueSum:id2\t1 
UniqValueCount:id3\tval1 
UniqValueCount:id3\tval2 

减速器将计算每个LongValueSum的总和,以及用于UniqValueCount计数不同的值。因此,减速机的输出将是:

id1\t25 
id2\t12 
id3\t2 

此包中的减速器和组合都非常快相比,运行流媒体组合和减速器,所以使用总包,既方便又快捷。