00:00
呃,同学们,我们刚才啊给大家说了一下这个分区器的这个问题啊,那么我们接下来呢,看一看它下面的问题啊呃,思考一个问题,如果分,嗯从分区的分区器和当前RD的分区器它一样怎么办?这句话是什么意思呢?就意味着比方说我们刚才的这个分区器啊准备好了,那么它返回了一个新的RDD,来大家看一下它的这个地方呢,比方说啊,咱们举个例子来,嗯,咱们在这里呢,写上咱们叫做new,咱们RD好放过来,放过来以后我把这个呢,放到这边啊放过来然后干嘛呢?我在这个地方我又做了一次我们的什么,咱们的partan buy对吧?哎,就这一次,那这样的话就意味着你当前的我们的分区器跟你当就是你就是说使用的分区器跟你这个RDD之前的分区器是一样的,会怎么办呢。对不对?所以啊,这个时候会有点问题,为什么呢?因为两个规则一样,难道我需要再重新把数据给它重新分区吗?其实不是,大家看一下,我点击这个叫做什么呢?咱们叫哈希partition呢,我点一下,点完之后大家会发现呢,它里面有什么东西啊,叫ES叫比较,对不对?那好,我回过头来看,这个叫partition by点一下点完以后大家有没有发现它在这个地方,其实是判断你传递的分区器跟他自己的分区器的双等号,这个大家应该知道,我们的scla当中,双等号其实就是一个做了飞空校验的ES操作,对不对?那所以呢,我们的双等号它其实最终走到的是哪里,就是那个我们叫做ES,那么这个ES首先第一个它会匹配它的类型,看看两个的类型是否相等,是不是都是哈希partitioner,如果它都是哈希partitioner怎么办?
01:57
看诶,看看它的分区数量是否相等,如果类型相等,分区数量也相等,那么他认为是同一个分区器,所以它什么它都不会做,所以大家看一下,在当前场合下,他就返回他自己就完事了,根本就不会产生新的R,你看看是这么一个操作,但是如果它的那个类型不匹配,然后呢,它的数量不匹配,它就一定会产生什么,我们新的RD,哎,就是这样,所以啊,咱们当前大家看类型是不是相等啊,数量是不是相等啊,所以说你再去做的话,一点意义都没有,为什么呢?返回的还是他自己一点变化都没有,所以啊,这就是我们想要说明的一件事情啊。
02:39
如果它的分区器是一样的,这个所谓的一样,第一个是类型,第二个是我们的数量啊好,我们再往下,他说了,思考另外一个问题,Spark还有其他分区器吗?你这个是哈希的,我们的分区器有没有其他的呢?咱们看一下,其实啊,我们点击点击之后大家会发现咱们的分区器呢,其实是要继承咱们的partitioner这个类的,所以点点完以后,它是一个抽象类,里面会有两个不同的,哎,或者说抽象方法对不对,那我就看一看这个partitioner有什么样的子类,不就完事了吗?我一个快捷键叫CTRLH。
03:21
那么大家会发现这个叫partitioner,它是有三个不同的partitioner,第一个叫哈希partitioner,这是我们之前看到了,还有一个叫做range啊,Partitioner范围分区,还有一个叫p partitioner啊,这是另外一个分区期了,但是啊,这个p partition呢,它加了一个小锁头,点一下,点完以后你会发现它是一个包访问权限的一个我们的分居器,所以啊,它只能在特定的包里面才能使用,那咱们其实是用不了的,对不对,最起码在外面想直接用你用不了啊,这是我们盖语法当中的访问权限的问题,那所以呢,我们能用的其实是不是就两个呀,一个叫哈希,一个叫range。
04:04
那这个range这个partition在什么时候用啊,其实一般是在排序的时候使用的,为什么?因为排序是有范围的嘛,对不对,诶,所以这个在我们排序的时候用的会比较多啊,是这样,其实我们回过头来咱们看看啊,嗯。咱们找一下,咱们点一下啊,咱们这里呢,搜索一下,咱们叫做什么呢?我们叫sort by,大家可以看到在sort by的这个过程当中,我们点一下,点点完以后大家看怎么了,就叫partitioner啊,这个咱们知道就可以了,同学们多的咱们也不再跟大家说了,嗯,好,咱们回过头来再往下啊,下面呢,再来思考一个问题,如果想按照自己的方法进行数据的分区怎么办?就这个分区规则呀,跟咱们自带的那两个呀不一样。啊,它不一样,一个是范围,一个是哈希,它不一样啊,我们想按照自己的比方说,哎,老师喜欢打篮球,那我就希望呢,把那个NBA的这个信息啊,或者这个消息啊,放在零号分区,然后把别的一些什么足球啊,什么网球啊这样的信息呢,放在别的分区,对不对,我想按照这个规则。
05:10
那这个该怎么办?告诉大家,其实啊。你自己写个分区器就可以了啊,为什么呢?你完全去模仿着咱们之前的这个分区器,咱们之前那个不就叫做哈希partitioner吗?点一下,点完以后大家会发现好像东西不多吧,咱们其实完全可以模仿他来写一个自己的分区去,这是没有任何问题的啊,但是呢,我们现在呢,先不给大家去演示这个操作啊,这个咱们后面会有专门的内容来咱们写啊,所以咱们就了解一下就可以了,就是说我们自己可以写分区器来改变数据的存放的位置,嗯,好了,这个呢,我们就说到这里啊,有几个需要注意的地方。
我来说两句