美文网首页
Mapreduce多reduce输出排序

Mapreduce多reduce输出排序

作者: 星辰fml | 来源:发表于2019-05-21 10:35 被阅读0次

在Mapreduce中,默认情况下多reduce输出是无序的,如果需要有序,可以使用两种方式:

  • 使用一个reduce,在内部实现排序
  • 使用多个reduce,实现全局排序

区别:

如果使用一个reduce实现排序,虽然可以实现排序,但失去了数据并行执行的优势;下面就实现多reduce输出,并实现全排序

实现步骤

  1. 设置分区器
//TODO 设置分区器为TotalOrderPartitioner
job.setPartitionerClass(TotalOrderPartitioner.class);
  1. 创建采样器
//TODO 创建采样器
InputSampler.Sampler<IntWritable, Text> sampler = new InputSampler.RandomSampler<IntWritable, Text>(0.1, 10000, 10);// 0.1为采样比例,10000为最大样本数,10为最大分区数
  1. 产生sequence文件,不需要自己调用采样器
//TODO 调用InputSampler的静态方法进行产生顺序文件,不需要自己调用采样器
InputSampler.writePartitionFile(job, sampler);
  1. 添加到分布式缓存
//TODO 添加到分布式缓存中
Configuration conf = job.getConfiguration();
String partitionFile = TotalOrderPartitioner.getParitionerFile(conf);
URI partitionUri = new URI(partitionFile + "#" + TotalOrderPartitioner.DEFAULT_PATH);
DistributedCache.addCacheFile(partitionUri, conf);
DistributedCache.createSymlink(conf);
  1. 执行job
//TODO 最后执行job
job.waitForCompletion(true);

在执行过程中,可以使用Job#setReduceTaskNum设置reduce的个数。

相关文章

  • Mapreduce多reduce输出排序

    在Mapreduce中,默认情况下多reduce输出是无序的,如果需要有序,可以使用两种方式: 使用一个reduc...

  • shuffle

    shuffle:系统执行排序,将map输出作为输入传给reduce的过程称为shuffle。mapreduce确保...

  • MapReduce的shuffle和排序

    系统执行排序、将map输出作为输入传给reduce的过程称为shuffle。 上图表示MapReduce的shuf...

  • Hive中的全排序:order by,sort by, dist

    写mapreduce程序时,如果reduce个数>1,想要实现全排序需要控制好map的输出,详见Hadoop简单实...

  • Partitioner

    Hadoop内置Partitioner MapReduce的使用者通常会指定Reduce任务和Reduce任务输出...

  • MapReduce的类型与格式

    MapReduce数据处理模型:map和reduce函数的输入和输出时键值对。 MapReduce的类型 Hado...

  • hadoop(9)Shuffle之排序

    1 mapReduce的排序 前面讲过在map数据传入reduce之前需要进行数据的排序、分组。而排序的实现也很简...

  • MapReduce 全排序

    有三种方法实现Hadoop(MapReduce)全局排序,下面分别介绍 1、使用一个Reduce进行排序 MapR...

  • MR的shuffle机制

    Shuffle过程是MapReduce的核心,描述着数据从map task输出到reduce task输入的这段过...

  • MapReduce:N keys,N files(一)

    【背景】 MapReduce中,不管是map阶段还是reduce阶段,二者的输入和输出都是key,value类型的...

网友评论

      本文标题:Mapreduce多reduce输出排序

      本文链接:https://www.haomeiwen.com/subject/reddzqtx.html