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

访客4年前黑客文章930

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

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

相关文章

安全渗透测试,如何联系远程监控黑客,找黑客攻击棋牌平台

11、Upfile_Article.asp bbs/upfile.asp中国银行手机银行 2.6.32014/3/13 15:56 Registry registry = LocateR...

鸿运合拍黑客攻击(鸿运合拍黑客攻击,完了吗)

鸿运合拍黑客攻击(鸿运合拍黑客攻击,完了吗)

本文目录一览: 1、鸿韵和拍靠什么赚钱 2、铜陵鸿韵和拍,开拍多长时间了? 3、老神鸿韵老祖和老祖母是什么关系? 4、鸿韵莱的羽绒服如何洗涤? 5、鸿运和拍投资,到底靠谱不靠谱? 鸿...

在线查kaifang网址,2020查开放房网址

线上查开放房网站地址2020,查kaifang网站地址不,仅有警员才可以查到。开房间时务必提供身份证件备案,身份信息将提交派出所系统软件,但除解决违法违纪外,还必须转交,一般警员没有权利查询通信纪录、...

靠边走潮流艺术荣获摩点商城年度最佳店铺,战

娱乐中国讯 1月27日,摩点举办了主题为“从一个想法到一个品牌”摩点与创作者共成长的年度峰会。在本次峰会中,靠边走潮流艺术Wrong Artitude获得了“摩点商城年度最佳店铺”的荣誉奖项,总经理王...

网上说的手机定位找人是真的吗(那些手机定位找人是真的吗)_手机定位

网上说的手机定位找人是真的吗(那些手机定位找人是真的吗),微信作为一款社交软件,日用户局限横跨十亿。其简短易用的聊天成果和全面开通的支付成果,大大增进了微名望户的粘性。微信已经是成为人们生计中不可或缺...

德国累计确诊逼近芯片设计70万 柏林单日新增创新高

  (抗击新冠肺炎)德国累计确诊逼近70万 柏林单日新增创新高   中新社柏林11月10日电 (记者 彭大伟)德国疾控部门10日公布的新增确诊感染新冠病毒人数为15332。截至当晚,德国累计确诊人数...