每一条记录开始是进入到map函数进行处理,处理完了之后立马就入自定义分区函数中对其进行分区,当所有输入数据经过map函数和分区函数处理完之后,就调用自定义二次排序函数对其进行排序。

MapReduce处理数据的大概简单流程:首先,MapReduce框架通过getSplit方法实现对原始文件的切片之后,每一个切片对应着一个map task,inputSplit输入到Map函数进行处理,中间结果经过环形缓冲区的 排序,然后分区、自定义二次排序(如果有的话)和合并,再通过shuffle操作将数据传输到reduce task端,reduce端也存在着缓冲区,数据也会在缓冲区和磁盘中进行合并排序等操作,然后对数据按照Key值进行分组,然后没处理完一个分组之后就 会去调用一次reduce函数,最终输出结果。

自定义比较器决定了我们二次排序的结果。自定义比较器需要继承WritableComparator类,并且重写compare方法实现自己的比较策略。

转载于:https://www.cnblogs.com/Mandylover/p/5229666.html

MapReduce自定义二次排序流程相关推荐

  1. hadoop之MapReduce自定义二次排序流程实例详解

    一.概述 MapReduce框架对处理结果的输出会根据key值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的.在我们实际的需求当中,往往有要对reduce输出结果进行二次排序的需求 ...

  2. mapreduce的二次排序 SecondarySort

    mapreduce的二次排序 SecondarySort 关于二次排序主要涉及到这么几个东西: 在0.20.0 以前使用的是 setPartitionerClass setOutputkeyCompa ...

  3. MapReduce之二次排序

    一 RawComparator介绍 Hadoop支持对序列化的二进制流直接进行比较.相比于对序列化二进制流进行反序列化再进行序列化,这种方式效率更高. RawComparator接口就是用来进行序列化 ...

  4. MapReduce实现二次排序续(十)

    文章目录 1. 前言 2. 换一种文件格式 3. 代码做部分修正 4. 效果截图 5. 小结 1. 前言 上一篇文章实现的二次排序key和value都是数字,接下来实现一组key为字母或单词,valu ...

  5. java mapreduce教程_Java搭建MapReduce完成二次排序步骤

    1.构建新的作业 Configuration conf=getConf(); Job job=Job.getInstance(conf); job.setJarByClass(SortYearAndT ...

  6. MapReduce二次排序

    2019独角兽企业重金招聘Python工程师标准>>> 默认情况下,Map输出的结果会对Key进行默认的排序,但是有时候需要对Key排序的同时还需要对Value进行排序,这时候就要用 ...

  7. Spark学习之路(八):分别使用Java与Scala实现Spark二次排序

    内容简介 一.Spark二次排序的概念 二.实现二次排序的详细步骤(Java语言) 三.二次排序代码演示 1.Java版本 2.Scala版本 四.总结 一.Spark二次排序的概念 排序操作是数据处 ...

  8. 大数据【四】MapReduce(单词计数;二次排序;计数器;join;分布式缓存)

       前言: 根据前面的几篇博客学习,现在可以进行MapReduce学习了.本篇博客首先阐述了MapReduce的概念及使用原理,其次直接从五个实验中实践学习(单词计数,二次排序,计数器,join,分 ...

  9. Hadoop Mapreduce分区、分组、二次排序过程详解

    2019独角兽企业重金招聘Python工程师标准>>> 1.MapReduce中数据流动    (1)最简单的过程:  map - reduce    (2)定制了partition ...

最新文章

  1. C++ classics
  2. 分辨率快速切换工具,以及源码.
  3. 【Ubuntu-screen】服务器上使用screen的常用命令
  4. 我也来记录我的一些开发心得和笔记!
  5. 安装、卸载、查看软件时常用的命令
  6. Vue中computed和watch的区别(面试题)
  7. 安装oracle9i时提示找不到文件OCS4J.properties的解决方法
  8. MD5 与 Base64一起使用 加密,计算原理
  9. TortoiseSVN 执行清理( cleanUp )失败的解决方案
  10. 实现关于跨二级域名和1.1和2.0版.net Forms身份验证体制的问题和解决办法.
  11. 超高频RFID R200系列远距离一体化读写器开发测试
  12. 7-12 特立独行的幸福 (25 分)(如何判断特立独行)
  13. blender学习日志
  14. 基于Springboot外卖系统13:实现文件上传下载模块
  15. 详解交换机的GVRP
  16. QT实现图片的滚轮缩放、框选放大、拖拽移动
  17. 《STL源码剖析》总结
  18. 直线导轨防尘处理方案有哪些?
  19. 多线程初体验——使用2个线程根据莱布尼兹级数计算PI、多线程排序
  20. Python爬虫采集抓取:Python3.x+Fiddler 采集抓取 APP 数据

热门文章

  1. 如何用auto_ptr做为函数的参数进行传递
  2. triu--上三角矩阵的抽取
  3. Kth Largest Element in an Array
  4. 用MFC显示一张图片
  5. git 本地仓库同时推送到多个远程仓库
  6. c++ 将输入存储到数组,然后反转数组,最后输出
  7. HDU4549 M斐波那契数列 —— 斐波那契、费马小定理、矩阵快速幂
  8. 操作系统之CPU调度
  9. HTML5与HTML4的区别
  10. PowerDesigner与SQL Server相连