Elastic MapReduce 中可用的 reducer

Posted

技术标签:

【中文标题】Elastic MapReduce 中可用的 reducer【英文标题】:Available reducers in Elastic MapReduce 【发布时间】:2010-12-29 03:37:48 【问题描述】:

我希望我以正确的方式提出这个问题。我正在学习使用 Elastic MapReduce 的方法,并且我看到了许多关于可与“流”作业流程一起使用的“聚合”减速器的参考资料。

在 Amazon 的“Amazon Elastic MapReduce 简介”PDF 中指出“Amazon Elastic MapReduce 有一个名为聚合的默认缩减程序”

我想知道的是:还有其他可用的默认减速器吗?

我知道我可以编写自己的减速器,但我不想最终编写已经存在的东西并“重新发明***”,因为我确信我的***不会像原来的那样好。

【问题讨论】:

【参考方案1】:

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

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

这是一个内置在流式实用程序中的 reducer。它通过编写一个输出以特殊方式格式化的键的映射器来提供一种简单的通用计算方法。

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

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

reducer 将计算每个 LongValueSum 的总和,并计算 UniqValueCount 的不同值。因此,reducer 的输出将是:

id1\t25
id2\t12
id3\t2

这个包中的 reducer 和 combiner 与运行流式 combiner 和 reducer 相比非常快,因此使用 aggregate 包既方便又快捷。

【讨论】:

【参考方案2】:

我也有类似的情况。我从谷歌结果等推断出现在的答案是“不,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 所要求的。

【讨论】:

以上是关于Elastic MapReduce 中可用的 reducer的主要内容,如果未能解决你的问题,请参考以下文章

将目录作为压缩文件从 Elastic MapReduce 上传到 S3

Amazon Elastic MapReduce - 从 S3 到 DynamoDB 的大量插入非常慢

运行依赖于 Numpy 的 Amazon Elastic Mapreduce 作业的方法是啥?

使用 Karmasphere Analyst 和 Amazon Elastic MapReduce 设置 jobconf 参数

大数据分析:结合 Hadoop或 Elastic MapReduce使用 Hunk

大数据分析:结合 Hadoop或 Elastic MapReduce使用 Hunk