MapReduce作业输出排序顺序

dps*_*dce 9 hadoop mapreduce

我可以在我的mapreduce作业中看到,reducer部分的输出按键排序.

因此,如果我将reducer的数量设置为10,则输出目录将包含10个文件,并且每个输出文件都有一个已排序的数据.

我把它放在这里的原因是,即使所有文件都有排序数据但这些文件本身没有排序..例如:有些情况下,部分000*文件从0开始并在zzzz结束假设我是使用Text作为关键.

我假设文件应该在文件中排序,即文件1应该有一个和最后一个文件部分 - 00009应该有zzzz或atleaset> a的条目

假设我拥有所有字母均匀分布的密钥.

有人会为这样的行为抛出一些光明

sri*_*ini 11

您可以使用以下方法实现全局排序的文件(这是您基本上想要的):

  1. 在mapreduce中只使用一个reducer(糟糕的想法!!这在一台机器上放了太多工作)
  2. 编写自定义分区程序.Partioner是在mapreduce中划分密钥空间的类.默认分区(Hashpartioner)将密钥空间均分为reducers数.查看示例以编写自定义分区.

  3. 使用Hadoop Pig/Hive进行排序.