00:00
好了,同学们,我们刚才呢,给大家讲的是我们文件数据源的时候,它的分区数量是如何设定的,对吧,如何计算的,咱们已经大概的知道了,那接下来我们想看一看咱们的这个数据是如何存储的,那其实啊,咱们读取的是这个一点T123,那你三个分区,那你第一个分区不就是诶。不对呀,按理说你的第一个分区不应该是一,第二个分区是二,第三个分区是三,不就平均分了吗?对不对?那为什么你的这样是一和二在零号分区,我们的三在一号分区,而我们的二号分区啥都没有呢?那这是为什么呀?这里我们就得给大家解释一下了,咱们Spark当中它的这个数据分区的是如何分配的啊,所以把这个关掉,咱们来创建一个新的啊,来拷贝,拷贝以后这边给他一个一,咱们点击OK,好吧,嗯。好了,那这个时候呢,我们就把这些文字性的东西给它去掉啊,咱们写上就是我们的图图,嗯,好,我们叫做什么数据啊,分区的分配啊,来就是你数据分区啊,它里面的数据是如何分配的,对不对,那我们首先先把原则告诉大家啊,先把原则告诉大家,首先第一个。
01:20
我们的这个第一来就是我们的这个数据呀,它是以为单位行为单位啊,为单位进行读取的。这句话是什么意思呢?就是我们的Spark,它在读取数据的时候是用的海杜博的读取方式,所以呢,它是一行一行读取,它这个跟字结束没有关系啊,所以来我们这里补充一下,Spark它读取我们的文件,它采用啊的是我们的海杜op的方式啊的方式读取,所以呢,它是一行一行读取,它和字结束没有关系,这个大家应该知道对不对啊,和字节数没有关系,不是说啊,我这个呃,一行当中,比方说举个例子啊,咱们一行当中啊,咱们一行当中啊,比方说有100个字节,但是我现在只需要读十个,那你说我就从100个中把十个读出来嘛,对不对,这是有问题的,为什么呢?如果你巧了,你的十个字节把一个单词拆开的话,那你还能是完整的单词吗?不是了吧,那如果不是的话,你还能做得了word count吗?不行,所以我们的海。
02:33
杜培呀,他在读取数据时候,它是一行一行读取的,和字节数没有关系啊,这是第一点,第二点,咱们再给大家说一下,二二什么呢?我们数据读取时啊,数据读取时它是以我们的偏移量。为单位的什么意思呢?就是说我们的数据读的时候从哪开始读,它是要找到它对应的偏移量啊,那怎么理解呢?比方说同学们看来,同学们看我现在咱们现在的那个文件中的数据,大家想想文件中的数据是不是123呢?
03:12
对不对,没问题吧,但是你要记住啊,后面它是有回车换行的吧,我加两个圈A表示特殊符号的意思啊,所以这个呢,就是我们的什么是我们的数据了,那好,那么我们从偏移量的角度来说的话,记住我们应该是012,因为偏移量是从零开始的,对不对,所以它的偏移量是零,它的偏移量是一,它的偏移量是二,没问题吧,同学们好,然后呢,我们在这写上干嘛呢?我们写上叫做什么呢?叫做3458,所以345,然后呢,再来,那这个不用说了,那偏移量就是六了呗,所以说大家会发现这个是它的什么,咱们的偏移量。好了,那你读取数据时是以偏移量为单位,那好,那么每个分区读多少个字节呢?所以我们写个三啊,咱们写个三就是我们的这个数据分区啊,它的一个我们叫做偏移量范围怎么计算啊,范围的计算你光说了我们从我们指定的位置读,但是你的这个位置在哪呢?对不对?诶这里咱们说一下,大家看啊,我们前面是不是判断出来了,咱们现在有七个字节,七个字节的话,每一个除以二对不对,那就是每个分区是三个吧,所以说它的偏移量大家看。
04:31
就是第一个分区,零号分区,零号分区的话,它的偏移量肯定是从零开始的,对不对,从零开始的话,记住啊,它要零加上三。什么意思啊,就是说我们的三嘛,就是每个分区三个嘛,所以从偏向零开始,它会加上三,加上三,记住它是包含的,它是包含的,然后呢,再写个一,然后再来,然后这个地方。你的这个。一是我们的第二个分区,第二个分区零加上三不就是三吗?所以偏移量是不是应该是三呢?同学们,然后来三加三是多少,那就是六,所以到这应该是六,然后呢,再来写上一个二,那么这个二呢,应该是我们的六,再加上个一是不是应该是七呀,所以说它的偏移量应该是这个样子的啊,记住了啊,036为什么呢?每个是三个字节嘛。
05:28
啊,但是呢,我们这个偏移量就是我们每个分区是三嘛,所以零加33,三加三十六六加一是七,因为最后剩一个一嘛,所以是它,所以这就是我们读取偏移量范围的计算。好了,那么你把前面的这个我们的操作给它联合在一块儿,你来分析一下吧,它到底怎么回事儿吧,嗯,来大家看我们三个分区啊,来三个分区。那么你三个分区的话,它是不是从零开始,从零开始,那么从这开始吧,从这开始的话,记住啊,这个三它是包含的,为什么包含呢?大家看一下,如果它要不包含的话,是不是012,那么这三个字节就够了,那么这个时候一是不是就被读到了,它就会放到我们的这个分区里面吧,所以这个分区里面放的是是一呀。
06:17
但是你会发现不是,为什么不是呢?因为打开它是一和二都在里面了吧,对不对,同学们,诶就是这样,所以在这种情况下的话,同学们看看啊,我们这个地方是一是不对的,为什么?因为这个三是包含的,它是包含的话,就意味着0123,这个三是不是它它会读到,哎,它会读到,所以一和二就被你读到了,但是还有个问题,它是一行一行读取的,那我问问同学们,这个四和五是该也被同时读到,因为你读三的时候,那是不是到这一行了,所以这一行全都会读到,所以呀,我们012345其实都被读到了,诶就是这个意思啊。
07:01
好,那这个零号分区咱们现在已经明白了,咱们接着呢往下看,下面呢是我的一号分区,一号分区是三到六,那么从三读,但是你会发现不行,不能读,为什么不能读呢?是因为已经读过了,对不对,所以啊,咱们海豆读取数据还有个问题就是偏移量不会被重新读取啊来所以我们说一下啊,来咱们的偏偏移。偏移量啊,它不会被我们的重复读取,所以在这种情况下的话,大家看345已经被他读过了,对不对,所以说剩谁了是个六,那这个六不就是三吗?所以就把三放到了谁啊我们的。一号分区就第二个分区对不对?好,那么再往下看吧,下面呢是我们的二号分区,但是我们的二号分区大家看从六开始吧,那这个六怎么了?已经被读取过了,所以它不能被重复读取,所以它就没有东西,就是空,所以咱们刚才看到的这个现象其实是对的,我们零号分区是什么一二。
08:10
咱们的这个一号分区是三二号分区,什么都没有对不对,跟咱们刚才分析的是能够对应的上的,好吧,同学们。
我来说两句