我在Hadoop 0.20中有一份工作需要对大文件进行操作,一次一个.(这是一个预处理步骤,将面向文件的数据转换为更清晰,基于行的格式,更适合MapReduce.)
我不介意我有多少输出文件,但每个Map的输出最多只能有一个输出文件,每个输出文件必须排序.
如果我使用numReducers = 0运行,它会快速运行,并且每个Mapper写出自己的输出文件,这很好 - 但文件没有排序.
如果我添加一个reducer(plain Reducer.class),这会为单个文件添加一个不必要的全局排序步骤,这需要花费很多时间(比Map任务花费的时间长得多).
如果我添加多个reducer,则各个map作业的结果会混合在一起,因此一个Map的输出最终会出现在多个文件中.
有没有办法说服Hadoop对每个作业的输出执行地图侧排序,而不使用Reducers,或任何其他方式来跳过缓慢的全局合并?