我的情况如下:
我有两个MapReduce作业。 第一个是MapReduce作业,它生成按键排序的输出。
然后第二个Map only作业将提取部分数据并收集它。
我在第二份工作中没有减速机。
问题是我不确定来自map only job的输出是否会被排序,或者它是否会从map函数中洗牌。
答案 0 :(得分:1)
首先:如果你的第二份工作只包含一个包含/排除特定记录的过滤器,那么你最好只是将这个过滤器添加到第一份工作的减速器的末尾。
MapReduce的一个相当重要的事实是,reducer将以“某种方式”对您无法控制的记录进行排序。在编写作业时,您应该假设记录以随机顺序输出。
如果您确实需要以特定顺序输出所有记录,那么将SecondarySort机制与单个减速器结合使用是“简单”的解决方案,不能很好地扩展。 “硬”解决方案是“Tera sort”基准测试使用的解决方案。 阅读此SO问题,以便更深入地了解其工作原理: How does the MapReduce sort algorithm work?
答案 1 :(得分:0)
否则zsxwing说,除非你指定reducer,否则不会进行任何处理,然后分区将在map侧执行,排序和分组将在reduce侧完成。