这对多阶段作业有影响。例如,如果我们在作业的阶段1中按键"a"排序,在作业的阶段2中按键"b"排序(将阶段1的输出作为stdin),我们是否可以假设当两个阶段完成时,记录按键"b"排序,其次按键"a"排序?为了解决这个问题,假设映射器和还原器不改变记录顺序。同时假设reduce任务的数量为1个或更多。
请记住,答案可能会根据阶段1的reduce任务的数量而变化。例如,如果阶段1的reduce任务数量大于1,则键a将被拆分到多个文件中(尽管相对于每个文件是按排序顺序进行的)。然而,当只有一个reduce任务时,所有的值都将出现在同一个文件中,这可能是稳定性的必要条件,具体取决于实现。
如果答案是肯定的,那么提供相应文档的链接将是最有帮助的。
谢谢,
SetJmp
默认情况下,Hadoop不会强制执行您希望的稳定排序属性。
Hadoop流有Comparator和Partitioner来帮助排序从map到reduce的结果;看这里编辑:更新坏链接