00:00
好,接下来呢,我们讲解一下排序的分类啊,排序呢,我们一共分了四类,比如说。部分哪去填哪去。辅助排序以及这个二次排序啊。后面我们还有一个这个。自定义排序啊好,那我们先看一看这里面。第一个部分排序。也就是说,Mobile根据输入记录的线。就是这个键对数据。排序,保证输出的每个文件内部都是有序的。比如说最终输出的结果可能有多个文件,但是呢,每个文件内部都是有序的。按照一个降序啊,还是升序。那么问大家问题,什么能控制最终文件输出的一个个数呢?是不是这个分区啊,哎,对,比如说你这里面啊,分了四个区,同时的reduce number reduce这个text的个数啊,设置也是四,那最终你输出的就会。那么如何让这个每个文件内部有序呢?哎,我们后面会有相应的这个案例哈。
01:03
啊,这就是部分排序。那下面呢,我们说一下这个全排序。全排序呢,是最终输出结果只有一个文件,且文件内部是有序的。就最终你输出的这个reduce只有这么一个文件,写这个文件的内部呢是有序的。那如何来实现呢?其实嗯,只要让这个reduce个数为一。那就能实现最终输出的结果只有一个文件。其实默认值呢,也是一个就是一。所以这个不用控制也是OK的哈,该方法在处理大型文件时效率极低。啊,因为一台机器处理所有文件,完全丧失了卖所提供的定型框架。啊,举个例子,你在这个map端,哎,前一级,比如说有100个。那你最终输出到一个里面去。那这个很显然是不合适的。啊,那这个容易导致这个一个reduce这个负载过大。
02:03
那怎么办呢?哎,往往呢,我们先,哎在这个二级上再开几个,这就先进行一个局部的汇总。然后再将他们运算的结果最终汇总到。它就能实现我们这个全排序啊,啊这个往往当中呢,是又开启了一个。多级job的一个串联哈,后面呢,我们有相应的这个案例。好,接下来呢,说一下这个辅助排序。辅助排序啊,它属于在reduce端对这个K呢进行一个分组排序。那这个排序呢,我们在后面讲案例的时候,哎,我们再详细说啊这里面。先知道有这么一个东西就OK。下面呢,我们说一下这个二次排序。二次排序呢,往往是在这个自定义排序过程中。哎,对,一个这个compare to方法啊,里面有相应的这个判断条件,如果这个判断条件呢,是两个条件,那么就是20万血。
03:04
如果是三个条件,那么就是三次排序。那四个条件呢?啊,这个只是面试官啊,这个面问的问题,这个出发角度不同。啊,所以说你要知道这是二排序。啊,上面呢是全排序部分排序啊,以及辅助排序。啊,每个面试官啊,问的这个题都不太一样啊,都不太一样。好,这是几个概念啊,要清楚。那下面呢,我们来看一下这个自定义排序。Comparable。那么并对象作为P传输的时候,需要实现readable comparable接口,重写里面的compare to方法就可以实现。啊,就这么简单,将这个并对象啊,一定要放在这个K上。然后呢,实现这个writeable接口,那你就需要重写它的compare to方法,那在这个compare to方法里面,哎,根据用户的需求设置相应的这个条件,比如说我们这里面比的是这个按照总流量的大小进行一个倒序排序。
04:09
啊,这是一做了一个案例哈,后面呢,我们也会,呃,在这地方。自定义排序。自定义排序。那这个呢,还记得我们之前写的这个序列化,序列化的时候实现的是什么接口啊。是不是只有这个接口啊。那这次呢,这个自定义排序呢,就是加上了readable compable接口。就OK了哈,好,这是这个排序的分类啊,先了解到这儿。
我来说两句