00:00
好,那我们需要对这几个东西做一个总结。啊,做一个总结,奥特曼说,特曼,现在我们学的四个了吧,就是查询语句当中,这个都是select,后面跟的语句是不是。Partition的BY是介表语句里面的吗?查询语句里面有order by so by,然后disribu和class by,那我们知道这个order by它是一个全局排序,然后就是你的执行语句啊,只会有一个云流色法,不管你云流色你自己有没有手动设置值,它都会这一个吧,啊我们都演示了,因为它就是全局排序,它产生一个逻接字,好第二个所的们。它是每个reducer内部是有序的是不是啊,内部有序的,而且还分成了三个不同的区啊,也就是说最终输出的文件有三个,这三个当然是你手动的设置的语宙速的一个个数,这个东西来了吧。好,然后后面我们讲的这个distribute。啊,它是一个分区,指定分区字段,它会按照你字段啊,然后我也。
01:07
维的个数吧,然后决定它去到哪个区里面,根据它模的反馈值是零是一是二,然后决定到把这个数据放到哪个文件里面嘛,是这样的,然后最后class by,其实是这两个的综合。那学到这块,大家应该有一个疑问。什么疑问呢?我这个class或者说distribute加上so,我都指定了它的一个什么分区字段,是不是啊,因为class它直接就是等于是是两个是一样的,哎,Tri by和so by姿态是一样的,都指明了分区姿态,那最后呢,我们看到结果也是一样,也是这种情况,哎,它是按照我们指定的字段就能放到不同的文件的。但是有一个奇怪的点在这。CD到说了这个文件,这个文件还记得当时我们是怎么出来的吗?只用了说德半是不是啊,只用了唆了半,那而且我们讲过唆德半它是排序是不是啊,它每个维究色内部排序,那它为什么好好的分区了呀,分成了三个文件,指定了默认了三个那。
02:25
它这个文件啊,里面具体的文件是按什么内容来进到不同的区的呢?大家有没有想过这个问题啊。Key的含蓄,它key是什么呢?他K是什么呢?是后面我们的那个说的半那个字段吗,是吗。那我们看一下,如果是的话,看了一下那个。把这个拿出来是吧,放到文件里面,我们来看一下。
03:01
你们开始。听这块内容的时候没有没有这个疑问。然后我们把第二个。就是一这个文件啊,第二个分区拿过来。然后放到这中间有个空格是吧,然后把第三个内容也拿过来。这里边就是两行数据了吧。好,它是这样的,那我们知道其实是。它那个数据是这样的吗。八百五三千五千,然后950,因为有的同学说是按照什么K是吧,二百五一千三,因为我们中间没有加那个空格是吧,八这样的,我把那个隔开的话,就是为了拿这个薪水,单独的把薪水拿出来是吧。
04:04
那你一看啊,最后你会分析得出,它并不是按照什么薪水,因为你看一千二百五看到没。如果说你是按照最后那个cel那个字段来的话,那你这个一千二百五们不管在哪个区,那肯定在同一个区吧。对吧,同一个区它不对的啊,其实是什么呢?在这来看一下第区的这个是不是做相应的解释啊,这四个是吧,说all class distribute解释啊,点开来在这个地方,然后他想什么。和的不同点。啊,但是你要往下看,在这他还讲了一个,这是一个笔记吧,做了一个笔记,他说什么。这是什么的不同点啊?
05:00
So和class的不同点,那么其实我们知道它俩之间的不同点。就在distribu by嘛,他多了一个disribu by,是不是啊,他少了disribu by,但是他们执行的结果啊,都分区了,就好像他也有区一样,只不过我们现在还不知道这个Dis区它的字段具体是什么,对不对啊,好,我们要找出来它的字段是什么,来看一下他说这个不同之处啊在于什么?Class它的一个分区其实是。说的慢,直接的分区吧,他两个是一样的,能感觉到吧。这句话表明了什么意思啊,就是class by等于disput distribute by一个字段加so by一个字段是这个意思吗?因为他说他这个字段其实跟那个说半是一样的嘛。啊,如果它这有多个云丢子的话。有多个,因为我们之前试了,如果你把它改为负一,就是用一个,或者说改为一的话,改为一的话,它并没有产生分区吧,啊,所以说这个多个reducer是前提啊,它必须要有多个reducer,它才能产生多个分区啊,这是拉,然后接着看。
06:13
他说什么,他的一个partition是怎么来的呀,随机为了什么啊,In order to。为了分散数据吧,哎,其实它这里的文群它并没有指定什么K的,它就是随机的,因为你自己都没有指定分区字段。它内部他也不会帮你指定,它只是为了让多个reducer处理的数据相对来说均衡一点啊,他自己做了一个随机,但这个随机其实是一个尾随机,是什么意思呢?就是说你每次执行这个速特卖,对于同一个数据集来说,它的结果都是这样的。都是这样的啊,就是它这个随机是一个具体的随机算法啊,具体的一个随机算法,不是说他进来之后随机选选一个区,不是这样的随机啊,如果是我刚才说真的是完全的随机的话,那你每次执行的结果是不是应该不一样的,对吧?但是其实它是一样的,也就是说它这个算法是固定的,它针对于同一个数据集来说,你每次用单独用缩的麦这个字段的时候,它都是一样的啊,因为你没有指定它按什么字段进行分区,所以他也不给你按什么字段进行分区了。
07:30
因为我们知道,如果说你按具体的字段进行分析的话,它可能会产生什么。数据倾斜吧,是不是就是说如你本来说的慢,你不想按什么字段分区的,但是如果说还有这个框架给你非得说按一个字段分区。那很有可能,就像有的同学所说的,他因为认为缩了半后面就是一个字段,跟着cell,就按cell进进行分区吧。进行分区,那有可能这个cell之后,可能把数据全部集中到一个分区里面,是不是有这种可能啊,有吧,哎,他框架才不帮你干这种事呢啊,这种的东西容易产生数据倾斜,所以他就是为了。
08:12
分散,哎为了分散数据用的啊,你看他为了就是T区的哎,把数据分散开嘛,就是为了分散数据用的,没有什么其他的一个特别的支数。啊,他肯定,而且你仔细想一想,你也能想明白,说的卖后面的字段肯定不是他分区字段。如果是他分期自段,那它跟什么重了呀。跟class是不是一样的呀,因为class后面跟着就是分期字带跟排序字段呀,那你说又是分期字段,那那他要搞这些东西干嘛呢,对吧,所以稍微想一想就能想明白,所后面字段肯定不是当地的分区增,而且通过我们查官网上些信息能找到了,哎,它其实就是为了分散数据到不同的re做一个数据均衡用的,防止数据倾斜。它是做一个随机啊,随机的这是速派和就之间的它一个区别啊,也就是速德半它的用,因为你们在学的过程当中,肯定有人有疑问啊,它分的区到底是按什么分的,按什么分的。
我来说两句