00:00
好,接下来呢,大家有没有一个疑问呢?说海哥你这地方设置的是这个五,那如果我不设置五,我设置别的行不行。比如说我这块我设了一个四。他会怎么走?对吧,哎设是,那假如说我们就设立一个40啊。嗯,是是。会不会正常运行呢?右键执行。如果不会正常运行,会抛什么异常?好,挂掉了对吧,哎说illegal part for这个啊,报的是Java IO exception,为啥报的是IO exception。你想啊,我前面的这个。分区,我设几个分区。三五个分区,那我未来reduce task我起了几个?我起的是四个。那你告诉我,我这个五个分区的数据怎么往里面写,你说海哥简单,你往这写,他往这个写,他往这写,那他他往这写,那剩下这个往哪写。对吧,哎,他就不知道往哪写了,所以说他报了一个IO异常。
01:04
哎,所以说这个数啊,首先呢,哎,不能这个不能设置四,那能不能设置三呢,也不能二行不行也不行,好,那不能设置三,不能设置二,那设置一行不行。对吧,那我是这个一。行不行呢,右键执行。好,执行完了,哎,好像可以对吧,好像可以,那么来看一下这个结果啊啊一。你发现行是行了,但是最终它输出的结果就一个。那为什么最终你设置这个number text为一,它怎么变成它了呢?那这里面啊,给你们debug一下啊,我把这个。哎呀,输出的值删一删啊算一删好吧,这些呢删掉。删掉,那下面呢,给你debug运行一下,比如说这个是OUTPUT1。
02:01
嗯,怎么debug呢,来到这儿。这个地方好吧。给你解释一下这个原理啊。呃,右键执行。我先来五吧,我先给你来五啊,先来5d bug运行,然后再来看一个这个。呃,一啊。右键第八个。好,现在呢,执行的是五,那五的时候,然后我们进去。进再进再进再进到这儿,到这儿之后,那我再进的话是进到哪里,是进到哈西帕提森,那还是我进到我自定义的这个帕里面去哪一个呢。思考一下。刚才我们输出的是五个文件对吧,那肯定进的是我们自己的。你看这谁province啊,这个省份part是吧,进入到我们这个分区,那他往下走。嗯,出去,那这个呢,我全数运行,哎执行完好,那就说如果是五个的话呢,走的是这个。
03:03
那再来,那下面我在这个。Driver里面改一下,我给它改成一。改成一,改成一之后我现态在第八位下。一吧,啊,这几百块钱。打断点,你看他怎么走的?右键执行。好到这儿了,到这儿之后呢,往下进。再进进再进,走好,你发现它不再走,我们自定义的那个爬哪了,进到哪了,进到我们刚才看到那个地方,还记得吗。哎,自己用了一个内部类,然后重写了get帕方法,那你这个帕an斯是一一减一零就一个分区。啊,它底层原理啊,是这样的哈,好,那我们全数运行吧,把这个断点打掉。嗯,这就搞定了,所以说你设置一,那它最终输出的只是一,那如果设置的是234啊会报L异常,设置五的话呢,是正好,那我设置六会出现什么情况。
04:09
我设置个六。能不能正常运行呢?思考一下。这个我就不提bug了啊,非常简单。我设置下六。哎,你发现能够正常运行对吧?哎,那我们看一下结果啊,666。找出来。电脑。666对吧,哎,你看这里面发生了什么情况,输出了六个文件,前五个文件都有大小,最后一个没有。相当于最后是一个空的,那看是不是。你打开最后是一个空的吧,哎呀,这个是别的啊。
05:00
好把右边的关掉啊,关掉之后你把它它打开。你看空的吧,哎,空的,那你看其他值呢,右键打开没问题吧,哎,是有对应的值的啊行,那也就是说,那我们总结一下啊。在我这个笔记里面有对应的分区总结。在这个位置啊,打开。啊,如果reduce text的数量大于你分区的这个结果,那则会多产生几个空的输出文件,刚才说了,你这个reduce test如果设置为六,你分区呢,是五对吧?啊,分区是五,那就会有空转的这个radio text,那这种现象好不好啊?肯定不好啊,你空转的话,Reduce task这个资源我会申请,因为开启radio task默认是一个CPU。然后呢,嗯,还有1G的内存,那你就啥也没干就浪费了,对吧,那再来说,如果呀,Reduce task的数量大于一,小于你的切片数,发生什么情况,IO异常啊啊IO异常。
06:00
再来如果reduce text的个数等于一,那这不管你这个map test啊,这个设置多少个分区文件,你说你切片怎么怎么管都没有用,因为他压根就不走你那个制定那个分区。对不对,哎,那它最终它只会产生一个分区文件。再来分区号呢,必须从零开始逐一累加,啥意思啊啊看一下这里面。代码我们自定义这个分区。这个地方啊,这个分区号必须从01234开始。啊,你就说你必须得有,你不能中间空啊,你别这个这样,你说这个30,我这个给一个40,那不行,因为你这样一设置的话,那是不是一到30之间有什么三四五六七八九十,一直到30之间,那都是空转啊,那么浪费你资源吗?所以说它系统上不允许啊,他让你这个序号呢,是连续的啊,从零开始往后排啊,是这样一个效果啊。好,那再回来。OK,那下面一个案例说自定义分区如果是为五的话,设置number radio text为一,出现的结果呢,就最终只不过输出一个文件,那如果set number text为二,会报IO异常,Number text设置为六,那就会有多余的空转的文件,比如说控件。
07:17
啊,这就是这个分区的一个总结。
我来说两句