0

我的情况如下:

我有两个 MapReduce 工作。第一个是 MapReduce 作业,它产生按键排序的输出。

然后第二个 Map only 作业将提取部分数据并收集它。

我的第二份工作没有减速机。

问题是我不确定只有地图作业的输出是否会被排序,或者是否会从地图功能中洗牌。

4

2 回答 2

1

首先:如果您的第二个作业只包含一个过滤器来包含/排除特定记录,那么您最好将此过滤器简单地添加到第一个作业的减速器的末尾。

MapReduce 的一个相当重要的事实是,reducer 将以您无法控制的“某种方式”对记录进行排序。在编写作业时,您应该假设记录以随机顺序输出。

如果您确实需要以特定顺序输出所有记录,那么将 SecondarySort 机制与单个 reducer 结合使用是“简单”的解决方案,但不能很好地扩展。“硬”解决方案是“Tera 排序”基准所使用的。阅读这个 SO 问题以更深入地了解它是如何工作 的:MapReduce 排序算法是如何工作的?

于 2013-09-02T18:21:40.787 回答
0

不,正如zsxwing所说,除非您指定reducer,否则不会进行任何处理,然后将在map端执行分区,并在reduce端进行排序和分组。

于 2013-09-02T14:53:17.777 回答