*** 找黑客暗语(黑客在 *** 上叫什么)

访客4年前黑客文章866

默认情况下,Map输出的结果会对Key进行默认的排序,但是有时候需要对Key排序的同时还需要对Value进行排序,这时候就要用到二次排序了。下面我们来说说二次排序

1、二次排序原理

我们把二次排序分为以下几个阶段

Map起始阶段

在Map阶段,使用job.setInputFormatClass()定义的InputFormat,将输入的数据集分割成小数据块split,同时InputFormat提供一个RecordReader的实现。在这里我们使用的是TextInputFormat,它提供的RecordReader会将文本的行号作为Key,这一行的文本作为Value。这就是自定 Mapper的输入是<LongWritable,Text> 的原因。然后调用自定义Mapper的map *** ,将一个个<LongWritable,Text>键值对输入给Mapper的map ***

Map最后阶段

在Map阶段的最后,会先调用job.setPartitionerClass()对这个Mapper的输出结果进行分区,每个分区映射到一个Reducer。每个分区内又调用job.setSortComparatorClass()设置的Key比较函数类排序。可以看到,这本身就是一个二次排序。如果没有通过job.setSortComparatorClass()设置 Key比较函数类,则使用Key实现的compareTo() ***

Reduce阶段

在Reduce阶段,reduce() *** 接受所有映射到这个Reduce的map输出后,也会调用job.setSortComparatorClass() *** 设置的Key比较函数类,对所有数据进行排序。然后开始构造一个Key对应的Value迭代器。这时就要用到分组,使用 job.setGroupingComparatorClass() *** 设置分组函数类。只要这个比较器比较的两个Key相同,它们就属于同一组,它们的 Value放在一个Value迭代器,而这个迭代器的Key使用属于同一个组的所有Key的之一个Key。最后就是进入Reducer的 reduce() *** ,reduce() *** 的输入是所有的Key和它的Value迭代器,同样注意输入与输出的类型必须与自定义的Reducer中声明的一致

接下来我们通过示例,可以很直观的了解二次排序的原理

相关文章

Ghostscript多个输入验证和整数溢出漏洞

影响版本:Ghostscript Ghostscript 8.xGhostscript Ghostscript 7.x漏洞描述:BUGTRAQ  ID: 34184CVE(CAN) ID: CVE-2...

个人网站用什么域名?个人适合域名的有哪些?

个人网站用什么域名?个人适合域名的有哪些?

个人适合哪种域名?个人适合域名的有哪些?相信很多人都会有这样的疑问,下面聚名网为你详解一下以上问题。   个人适合哪种域名?个人适合绝大部分域名,比如com、cn、top、club、vip、o...

黑客攻击的常见手段有哪些(黑客攻击的主要手段)

黑客攻击的常见手段有哪些(黑客攻击的主要手段)

本文导读目录: 1、大学计算机基础 简述黑客有哪些常见的攻击手段 2、黑客有哪些攻击手段? 3、黑客攻击的常用手段有哪些? 4、黑客常用的攻击手段有那些? 5、下列属于黑客常用的手段有...

毕加索是什么画派,主要代表人物有哪些!

毕加索是什么画派,主要代表人物有哪些!

法国现代派大师毕加索,一生中给自己画过很多自画像,但是,当我们把他人生第一张自画像和最后一张自画像放在一起对比的时候,会发现差距特别大&hellip;… 而当我们把下面的14副自画像按照...

专业解冻qq黑客联系方式(黑客专业术语)-怎么制作新黑客免费qq破解器

专业解冻qq黑客联系方式(黑客专业术语)-怎么制作新黑客免费qq破解器

专业解冻qq黑客联系方式(黑客专业术语)(tiechemo.com)一直致力于黑客(HACK)技术、黑客QQ群、信息安全、web安全、渗透运维、黑客工具、找黑客、黑客联系方式、24小时在线网络黑客、黑...

怎么定位对方手机位置不被发现(定位别人手机具体位置)

  现如今,手机上愈来愈风靡。很多人焦虑自身的隐私保护遭受入侵,缺乏安全感。手机上一启动,便会测试联接相邻的通信基站。通信基站承担我们的通信。因此通信基站的方向是固定不动的,那样手机上就坐落于通信基站...