00:00
好,接下来呢,我们讲一下这个分区,这是part分区。那这个分区看一下。怎么来的啊,为什么要有这个分区,现在呢,有这么一个需求,要求将统计结果按照条件输出到不同文件中。这个我下面是举了一个手机号和主力的,那下面给大家举一个例子啊,更贴切的,比如说京东要求统计2018年。九月。十号啊,9月10号的数据TOP10。比如说保健品的TOP10分类,然后再来一个2018年。9月11号。TOP10。保健品的TOP10排行。啊,分别输出到不同的文件当中。那这时候呢,就引入到了一个分区啊,你只要输出到不同的文件,你有几个文件,那你前面就要分几个区。
01:01
分几个区?那默认系统默认的分区是什么分区呢?Har part。也一定要知道,系统默认的分区采用的是这种方式。那默认的分区它是什么规则呢?盖马森,他是按照什么规则去分的这个区?P的哈。值。K的哈希值是唯一啊。然后呢,它与上了一个这个in的最大值之后,对这个,比如说多少个reduce。进行了一个球。那么这这一个呢,往往这个像你们新手写成绩的时候,可能呃,不太知道这是怎么回事啊。什么意思呢?Max是不是相当于各种11111111啊?哎,那与上任何一个数之后,是不是还等于另一个数啊?那为什么他还要雨呢?
02:02
他是不是如果说你这个数据比这个引及格还大,是其他类型的,你是不是前面还可能一些其他数啊,啊,我是不是可以把它都干掉,哎,都干掉啊,这个意思啊,你看OK啊。那么这个你不用管,那最终呢,还是这个K的I的值对谁呢?Reduce task取。那默认的那个number的技能。码默认一个。那也就是说你这种你输出的文件是不是就一个啊,就一个文件,那默认它就一个,那这个哈希code的值。对任何一个值对一取余数,那这个求余数都等于。是吧,是不等于零啊,是不是一个啊一个数。好,那再往下。默认的分区是根据K的哈克值对开个数呢,求摸得当用户呢,没法控制哪个分区啊,哪个K存储在哪个分区里面去。因为什么呢?比如说我刚才说那个K,那2018年9月10号的。
03:03
我放到一个文件里面,9月11号的,再放到另一个文件里面,那我就可以把这个日期作为K。进行数据的一个分类。那下面呢,我们来进入到一下这个默认的哈帕。那怎么进呢?呃,来到我们。这样啊。零二的家庭。也来一个。巴西帕森的。二级百分里面呢,这里面有两个哪一个。最下面这个OK,进来进来之后,那你看part。然后下面呢,有一个get定方法。啊,帕扣的值。生它之后对这个number的这个text进行求。哪个断点啊,提前在哪个断点。然后呢,来到这个word看看吧。简单一点啊,来到driver里面去。
04:01
在里面干什么呢?都没了吧,啊正常比较正常了,恢复正常之后呢,设置一下分区。Job。点。如果说你这个number个数你不设置。那是不是一啊,哎,那种分区就没有任何意义啊,比如说这里面我设一下啊,将让大家分成两个分区。输入是这输出是奥四。没问题。你20。好,那这个呢,是没有运行一下啊运行。你爸爸?啊,麦里哪个点啊。
05:01
等会哈,右键。人已经。先进的是哪里看啊,先进的是哪里。先进的是map吧,哎,对,Map是不写到这的时候往后举得写。到这了吧,哎,到这儿查进。进到这,这是往回写吧,好,再见。再进,这还是。Test input output。进到这,进到这儿是不是一个是不是收集器啊,哎,就到这了啊,到这这往下,到这之前你看一下这里面有参数。点get part。
06:01
那是不是我我再往下一执行的,先先到这儿啊。哎,那就说这个数据先到这个分里面往出写之后到分区,分区之后才是是往外写啊。啊,走。这不就是到了哈西哈那了,哎,就到这了吧,哎,到这。啊,这值是不是二啊,哎,这我设置的是二,所以说进来了,进来之后我再出去,你说他到哪。看啊。大网中心是吧。相当于是你看啊这么一个过程,刚才呢,是走到这个map里面去了,对吧,哎,Map里面执行了一个contact。里面后面有一个收集器,收集器需要传入的参数是不是就是分区啊。
07:00
啊,就是分区好。来到这儿,到这儿之后,如果你再往里进进一下。到哪呢,就到了这个收集器。Key value to the。不是去的话。往下抬走。那你看这块分期数如果小于零,分期数还大于这个帕森斯。跑一场了。分区的一个校验啊,往下走这块呢,不用管下。下。到这。到这呢,是这个star。之前说过,这个索引里面有四个这个。内容啊,一个是start start,还有一个part,还有一个。放下。这个呢是,所以这个值默认从零开始之后,这个K就进行了。说虚拟化,那你看一下句事化里面内容啊进。去的话。
08:00
停下了。首先还好,这还有一个系数化是吧,那我们看一下Y6的。聊到这儿进啊进。到这了吧。那你看这里面是啥操作。设置各种流的操作啊,其实序列化无外乎就是一个流的操作。将你内存中的数据写入到。这晚上不就完了吗?啊,就这点事啊,好行。这是序列化之后,那这是往后写。不管他往下走,往下走。再往下,哎,看这一块是不是我写的四个信息啊。看什么?Start start。还有什么?这是其实是算你这个索引的啊,第3TO啊,其实就是一个index啊,Inex就是到底存在什么位置啊等等啊,所以说这么四个核心信息都放到了叫KK就是原数据。
09:06
信息都放在这里面了,好,往下。那这个呢,是具体的这个index的一个计算啊,相对来说比较复杂一些啊。工军管他是圆满的事儿。那再重来。那整个这个收集结束。之后又去哪了呢?又回到了。那也是说你看啊,再看这张图。他怎么走呢?进到map之后,哎,执行的这个contact right right之后进到收集器,收集器里面呢,然后首先获取的相应的分区,获取完分区之后将这四个参数。是不是写到这个原数据里面去了,哎,然后这个KV是不是都进行了一个序列化。哎,都进行了一个序列化,那有没有排序呢。他为什么没排序呢?
10:01
来排序是等到什么时候呢?等到到80%的时候,统一对这个水里的数据进行一个排序啊,或者什么呢,或者是整个文件都已经。解完了他就要对这个重新排序,这能理解吗?那这个排序这一块,我们先不大家去跟着编码了,明天大家跟业。训的,今天不一定讲到哈。好,至少分区这一块知道了,它是先判断一下是哪个分区啊,然后写入到相应的原数据信息里面去。来,我到这儿,我到这儿你可以再往下跟一下啊。再往下找,再找,终于找到这儿了啊。其实你再进进。到这之后呢,他又到了一个分区,你看这是下一步数据。走。复来这了,哎,反反复复的,直到你把所有的数据处理完,或者说到81%写的时候。全身行。
11:00
咱家啊,我这个。画完了之后看看结果有没有阿拉伯特四啊。是不是两个分区啊,哎,好看一下。再有这个吧,啊。是不是这些数据啊啊。这些数据它都是按照这个首字母的这个哈西扣的值啊,K的哈扣的值进行运算的啊。OK,那这是默认的,这个part你要知道。默认的是。哈希帕森,它是按照P达哈希po的值进行运算。
我来说两句