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

访客4年前黑客文章916

默认情况下,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中声明的一致

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

相关文章

黑客信息网IDE插件开发_代码审计之多项拼接型SQLi-2

黑客信息网IDE插件开发_代码审计之多项拼接型SQLi-2

一、背景代码审计,想必搞安全的同学再熟悉不过了,和标题中的IDE 插件有什么关系呢?莫不是标题党?偶然挖洞闲暇时,发现了陌陌安全SRC的一个公告SAST开源,赶紧去撸一波源码,最终以看不懂为由挂机了。...

dos 进入文件夹(dos copy命令拷贝文件夹)

  如何进入DOS(怎样根据DOS命令进到或撤出D盘文件夹名称)大家在日常生活中常常会碰到各式各样的难题。但即使如此!大家最好是竭尽全力处理这个问题。因而,今日边肖将与大伙儿共享应用dos指令进到和撤...

找区块链黑客-黑客可以看你手机里的一切嘛

找区块链黑客-黑客可以看你手机里的一切嘛

找区块链黑客相关问题 有些黑客会在正规网站中相关问题 黑客都玩什么游戏 漫画教程书选择哪本好呢(马克笔漫画教程书)...

一个可以假装黑客(一个可以假装黑客的电影)

一个可以假装黑客(一个可以假装黑客的电影)

本文目录一览: 1、为什么会有人喜欢假装自己是黑客 2、lenovo电脑如何伪装成黑客 3、如何像黑客一样装 4、如何假装自己是个黑客 5、伪装黑客的代码是什么? 为什么会有人喜欢假...

2020黑客书籍排行(黑客书籍推荐)

2020黑客书籍排行(黑客书籍推荐)

Web安全书籍可推荐? 1、马丁·福勒(MartinFowler)是一位非常有名的作家,并且拥有多本令人赞叹的书籍,例如《重构》和《特定领域的语言》。两者都值得一读。本书与RubyonRails框架有...

开房记录在线查询器

得益于《奇袭·地道战》在营销上积累的经验,《树上有个好地方》也果断采用了提前点映的方式,进行了多场云路演,同样取得了非常好的效果和反响,影片未映先火,营销上数据表现非常亮眼,抖音播放量超过9个亿,豆瓣...