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

访客4年前黑客文章917

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

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

相关文章

seowhy论坛VIP培训视频免费分享

seowhy论坛VIP培训视频免费分享

博友一直在要求我把SEOWHY夫唯的VIP培训课程分享出来,在这里有一个小小的要求,能做到的非常简单,希望各位博友对我的博客进行一个口碑评价,一个口碑评价即可获得SEOWHY的VIP视频培训课程全套,...

沈阳黑客最新消息(沈阳黑猫网络科技事件)

沈阳黑客最新消息(沈阳黑猫网络科技事件)

本文导读目录: 1、沈阳23位医护人员40天被骗216万,这些被骗的钱还能被追回来吗? 2、中国8岁小黑客,为了不写作业黑掉学校答题系统,近况如何? 3、黑客王晨 4、轰动的网络的黑客案有...

删除百度

这是百度根据搜索记录为用户筛选推荐出来的页面,可以通过设置关闭,具体操作方法如下:1.打开百度网页页面,在右上角找到设置选项。2.点击设置可以看到如图。 如果是老板的百度知道APP,右上角有删除选项,...

美女伴游天下-【陶侦】

“美女伴游天下-【陶侦】”陪伴要求:位置和地点:倾向于1线2线城市。今天介绍了“全国经纪高端外围:jg-lc/560.html”的相关内容。对于“全国经纪高端外围”还有其他问题可以上“青青高端模特”平...

金管家洗车靠什么盈利(不为人知内幕真相大曝光!)

日常生活在节奏快的社会发展时期,和时间赛跑变成大家每日都需要开展的竞技运动,特别是在在早晨,针对担忧晚到的众多工薪族来讲,时间就是钱财。为了更好地巨大的节约时间成本费,车辆在群体中从小有越来越普及化乃...

如何监控一个人的微信(监管他人微信不被发觉)

【文章百度收录网说】自打微信运用进到应用商店至今,微信因为其作用的多元性,提升了许多 的亲人和盆友。从长久看来,他提升了许多 的亲人和盆友。 有时候在梳理系统日志纪录时,不正确的实际操作会造成 聊天...