00:00
刚才呢,我们给大家演示的是我们从集合当中啊,咱们读取数据啊,然后呢,进行我们的分区,并且呢,咱们看了一下我们的源码来判断数据的存放啊,是放在哪个分区当中,我们看到了,那接下来呢,我们给大家讲解一下,就是我们文件在读取之后,数据的分区是多少,以及我们数据是如何分配到不同分区当中的,这个我们也给大家来看一看啊来,那首先我们的这个叫零二啊,然后我们在这个位置我们写上吧,嗯,在这写上啊呃,咱们叫下划线叫PAR,咱们叫并行嘛,嗯,好,然后点击OK啊点击OK。然后呢,我们放到这个位置,然后呢,接下来把这些呢,我们都去掉,咱们不要了啊,都去掉啊,都去掉以后呢,我们来下面写上SC,点咱们叫tax啊text file,这个text file呢,我们要传一个我们的什么我们的路径,这个路径呢,咱们可以给他看一个啊,来把这个咱们先删除,不要了,然后呢,打开咱们的date,我们这里啊就不要写太多了啊,咱们就用这个一就可以了啊,咱们就用它,所以呢,我们写上啊,咱们叫做date,然后一点我们的text,好,然后接下来我们写上咱们叫做RDD,哎这么写,写完之后,那我们说过了,你现在你是读取文件,那你的数据源就来自于文件,可是你到底分多少个区呢?
01:28
诶,大家会发现我这里并没有指定对不对,所以它一定也会有默认的分区,对吧?所以我们来啊,写上t file它可以啊,咱们叫做将我们的文件啊,作为我们数据处理的数据源啊,然后呢,默认它也可以啊,也可以设定分区也是没问题的啊,那这个默认值是多少呢?我们点一下,点点完以后大家会发现它的这个地方,它的名字很奇怪,叫什么呢?叫M。
02:01
Parts所以拷贝,所以啊,在这个地方我们来写上啊,它里面有一个,它咱们叫做什么呢?叫做最小分区数量,嗯,咱们叫做最小分区数量。那怎么这个理解最小分区的数量呢?诶,怎么还会有最小,难道比它还要多吗?哎,这个不好理解,所以我们回过头来,咱们继续往下看啊,先不考虑它吧,咱们就知道它这个数量就可以了,然后这边有个叫默认的meanin partitions,所以我们点一下点点完以后你会发现关键性的代码就在这个位置,所以拷贝拷贝以后大家看一下在这个位置啊,记住这是它的源码,源码当中有一个数学的对象点min啊me.min这个min表示的是两个值,它取小的那一个。那么我们之前说过了,如果你现在这个叫local,什么,我们的星默认情况下它应该是八个对不对,那你这是二,那哪个小王肯定是二小,所以在当前情况下,大家想想是不是应该分两个区啊,哎,应该分两个区,所以呢,我们来验证一下,看看我们说的是不是正确的啊,所以来我们写上RDD点我们叫做save啊,OK,我们写上咱们叫output,我就想看一看是不是默认的两个分区啊,咱们来运行别的什么都不用干。
03:28
好了啊,诶没问题了,那么咱们打开,打开以后点一下,诶大家有没有发现咱们这是不是二,这是不是两个分区,所以啊这个呢是对的啊,哎呀,那老师那我能不能给它设定一下呢?对不对,你这写了个二,那我设定个三行不行啊,所以可以咱们把这个删掉啊,把这个给它delete,然后呢,我现在改一改啊把这个呢我们除掉来。呃,如果啊,如果他不想啊,使用我们叫默认的分区数量,它可以通过我们的第二个参数来指定我们的分区数,哎,这是完全可以的,所以呢,这样写个逗号啊,写个逗号给它个三。
04:12
刚才不是两个分区吗?现在我们给它一个三,别的不用改,只要改个数量就可以了,那好我们现在再来运行看一看我们的结果,它是什么,咱们的这个结果呀,肯定是什么呢,那要是三,但是他说了一个叫meanin partition是是不是有可能比三多呀,有可能啊,咱们打开,打开以后,诶老师你看还是三个,那好像体现不出这个命的概念,对不对,这个咱们一会儿再说啊,咱们现在呢打开,哎,大家看一下没有什么问题啊,所以呢,我们首先分区的数量,咱们现在做到这儿,应该好像感觉它差不多了。但是呢,我们还是觉得有问题,就是这个mean呢,怎么理解不好理解,所以说我们把这个给它关掉,关掉以后干嘛呢,把这个删除,我现在把数据我稍微的改一改,我改成什么呢?比方说同学们看啊,我写个123啊,我就这么写,就这么简单啊,同学们就这么简单,然后呢,我这么写了以后,我干什么呢?我给他分我们什么,我们的两个分区。
05:13
那我们给它分两个分区啊,所以呢,来打开大家看啊,我这个文件的内容发生点变化,很简单,就是我们的三个字节吧,对不对,然后呢,我写上两个分区啊,来吧。好了,那我现在运行啊,那你咱们之前都演示过了两个分区,三个分区不都没问题吗?那你现在就这么简单,那我这肯定也是两个分区啊,所以我们运行。运行以后看结果啊,运行以后看结果,咱们的这个结果呀,看完以后啊,大家可能会觉得有点奇怪了,打开打开了以后是两个分区吗?不是。你看这是我们的0123个分区吗?但我写的是不是二,所以这个叫最小分区的数量是准确的,就是你真正的分区数要比我们这个值可能要大,诶,那为什么会大呀,你这不多呀,不就是123,这有这么多的呢,对不对?所以啊,这里我们给大家说一下,就是我们的这个分区的数据是怎么算出来的,到底有多少个分区,怎么算出来的啊来咱们说一下咱们的这个分区数量的一个计算方式啊,方式我们来点开,这个叫tax file,我们点一下。
06:28
点完以后,大家会发现这边有个叫海do file,这个其实啊,我们点进去,点进去以后啊,大家会发现它里面啊,就会做一些跟海杜博文件相关的内容,但是我们后退,为什么呢?因为你读取文件呢,它这边传了个值叫做text input format。诶,我们再点过来,点过来以后同学们会发现这个好像是我们的什么呀。还做不得吧,它是我们的那个Spark的东西吗?不是,所以啊,咱们在这里呢,先补充一下,先补充一下我们的Spark,它读取文件底层,其实它使用的就是海杜op的读取方式啊读取方式,所以说我们看到这儿就会发现,哦,原来呀,它是一个test input form,对不对,跟海to是一样的,好,我们再来点它,点file input for Mar,然后呢,我们往下来找一找,往下来找一找啊找到这个地方,因为我们大家之前学过咱们的海度什么,所以它里面的文件的这种读取方式和解析方我们应该有印象,所以呢,我们往下来往下来,诶,找到了这个地方有一个叫get split,就是告你该怎么去分解的,那么其中啊,大家看一下,它里面有这么个东西叫做total size,所以拷贝拷贝以后大家看啊,它的计算方式呢,有一个叫做total size。
07:56
那这个呢,是什么意思呢?它表述的是你把所有你读取的文件干嘛呀,给他统计它的字节数的总和,那好了,老师,那我现在就读一个文件,那这个文件是不是就是1233呢,对不对,它是不是三呢?我们告诉大家不是,为什么不是呢?因为你这么看是不行的。
08:18
大家看一下啊,我现在把这个文件我们给他来,我们点开。点开以后,它的真正的那个字节数长度其实并不是三,你鼠标放上去,你看怎么了,你会发现它的这个地方是不是七呀,哎,老师怎么是七呀,来我们这里打开,打开以后大家会发现,来我们看这。有没有发现在一和二的后面还有两个字节,这个叫做回车换行,那么就意味着我们的每一行,其实它在末尾会多两个字节,那么这样的话就是三个,那么这三个六个,六个加一个,因为这没有回车嘛,所以它就是七对不对,所以啊,这个七这个事儿你先要明白了啊好。
09:02
那你这个知道了以后,然后怎么办呢?然后接着往下看,下面这个地方在干嘛呢?这个叫total size,它再除以你的分区数量,咱们刚才是不是给了个二啊,所以它的这样就会什么呢?除以二,如果它是零就变成一,如果不是零就直接除以二就行了,所以说这边有个叫勾size啊,这边有一个叫做什么呢?我们叫做go啊好了。然后呢,写上它,然后写上一个什么呢?我们叫做这个应该是七,它除以二吧,然后是不是应该等于三,这个是什么意思呢?这个表述的是我们的每个分区,它应该存放什么呢?三个字节,它应该是这么来理解。那好,那如果每个分区放三个字节的话,大家想想我总共是多少,总共是不是七个字节,那么你七它除以三是不是应该等于二啊。就意味着每个分区放三个字节的话,那是不是意味着有两个分区,但两个分区够吗?它不够,所以点点点应该余一个一对不对,哎,老师,那这个一。
10:09
我是产生一个新的分区呢,还是跟原来的分区做一个聚合呢?放在一块儿呢?不产生新的分区跟之前的某个分区连在一块儿呢,对不对?所以思路上就不一样了,那其实啊,这个大家学过海杜普应该学过,海杜普在读取文件的时候,就是解析分区的时候,它里面有个什么概念呢?叫1.1的概念,对不对,叫做1.1的概念,1.1倍嘛,什么意思啊,就是你剩余的这个数,它占我们每个分区的字节数的多少,如果它大于了10%,所以就1.1万,大于了10%,就等同于要产生新的分区,如果它要是小于10%的话,那就不会产生新的分区,对不对?就是把剩余的那个字节数要判断一下。
11:00
所以啊,大家想想,你这是三,我这一百分之三三点三吧,所以大家想想它是不是肯定它会产生新的分区啊,所以它就会加一,那么所以多有多少个分区啊,就应该是三个分区,就是这么来的,所以啊,我们的分区的数量到底怎么算出来的,其实就是这么算出来的啊,这个不是我们Spark的内容,这是我们海杜当中的内容,对不对,同学们就是这样啊,所以如果海杜忘的话,你们回去要好好的再去复习复习,再去看一看。
我来说两句