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

访客4年前黑客文章918

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

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

相关文章

夏天卖什么赚钱?快来了解下

有一些事情是具备及时性的,这就造成 一些做生意也是有及时性,例如夏天的水果西瓜,只有在夏天售卖。看上去这种具备及时性的事情很难赚到钱,事实上反过来,正由于对季节有规定,通常在某一時刻最热销。那麼夏季卖...

牛排怎么吃步骤不丢人?(刀叉的正确拿法收好了)

牛排怎么吃步骤不丢人?(刀叉的正确拿法收好了)

TENDERLOIN(嫩牛柳,牛里脊),又叫FILLET(菲力),是牛脊上最嫩的肉,几乎不含肥膘,因此很受爱吃瘦肉朋友的青睐。由于肉质嫩,煎成3成熟、5成熟和7成熟皆宜; RIB-EYE(肉...

完善家园,猜成语擂台,我要当喵王,免费赚0.9元!

有人在“完善家园”摆了“猜成语擂台”,我告诉自己“我要当喵王”,由于一个项目赚0.3米,都是下载登录即可直接提现,秒到账微信零钱!有人说这太不值了,瞥见这种3毛项目就烦,我才不做。好吧,为什么坚持让赚...

计算机二级word黑客技术,微信聊天找黑客能找回吗,看门狗2黑客我怎么找

0x0302 安稳性 & 可用性优化cid和ann_id被赋值进程 一、C&C分类(根据功用) 22 }我管你妈这么多,糟蹋我这么多时刻,我直接找到...

中巴经济走廊拉合尔轨毕福剑出场费道交通橙线项目竣工交付

  中巴经济走廊拉合尔轨道交通橙线项目竣工交付   新华社伊斯兰堡10月9日电(记者李浩 刘天)中企承建的巴基斯坦拉合尔轨道交通橙线项目9日顺利竣工交付,预计将于近期开始商业运营。   拉合尔轨道...

美宝莲护肤品怎么样?好评不断

美宝莲护肤品怎么样?好评不断

美宝莲是欧莱雅集团旗下的大众彩妆品牌,定位是亲民,所以价格相对其他彩妆品牌来说并不算贵。 她家的很多产品大超市和屈臣氏都能买到,总体来说算是开架彩妆品牌,很早期的时候就知道这个品牌,当时她家有种浓浓...