00:00
好了,同学们,我们刚才呢,把这个map parts呀,我们讲了一下,那么他可以把一个分区的数据全拿过来让我们使用,对不对?好,那我现在如果有这么个需求怎么办?比方说我就想把两个分区中的第二个分区的数据我拿过来,我第一个分区我不要。那同学们这个我该怎么做呢?我们能不能用partitions来实现这个功能,好像是可以,为什么呢?因为我们之前的map partitions就把这个分区拿过来,可是问题就在于,我怎么知道它是第几个分区呢?我说了我要第二个,第一个我不要。那你不能上来就直接把这个数据给它去掉了,对不对,为什么?因为你不知道他第几个分区嘛,尤其我们分区间,他们之间是什么呢?无序的,谁先执行谁后执行是不确定的,你不能保证我的第一个分区先执行,这是保证不了的,对不对,所以在这种情况下,那我们该怎么办?所以啊,为了解决这样的问题,我们的Spark的方法,它提供了这样的一个功能叫map parts with index,那么这个方法的作用其实就是增加了分区编号,也称之为叫分区索引,那么所以在给定的参数前面它加了一个分区号,那这样的话,我可以根据分区号来做一些事情啊,所以来我们把这个呢给它去掉,去掉以后来我们写上咱们叫做零三啊。
01:30
来,我们点击OK放过来,现在呢,我们这个呢,不要了,不要了以后大家看还是1234,然后两个分区,按我们的分析啊,我们还是一和二在一个分区里面,然后三和四在一个分区里面,但是我们说过了,我们只看第二个分区,一号分区,因为我们分区是从零开始的嘛,编号,那么这个零号分区我们就不要了,所以说大家看我们来写上叫RDD,点我们叫map parts with index,那么这个with index,他所拿到的数据,第一个就是索引编号叫index,第二个就是这个分区的所有数据,然后它返回的也是一个迭代期,所以啊,你这么写就行了,所以基本的语法这么写是OK的,但是跟我要的不一样,我要的是判断一下我们的编号,如果他是我们的一,我就保留对吧,零一嘛,那如果是别的我就不要。
02:30
对不对,那所以我就写上了来,如果我们的这个index它等于我们的一,我就保留这个迭代期,对吧?这个数据我是要的,但如果他要不是1ELSE,那这个时候我可就不要了呀,那我不要的话,我该怎么办呢?那我给他个空的迭代期行不行?我们叫做new。点我们的迭代器,大家还有印象吗?New叫空集合,那么它的迭代器是不是就空的迭代器啊,哎,你这么写就应该可以了,好,那我来写上一个啊,咱们叫做RDD,嗯,然后这里呢,给它来写上行,我拿过来吧,拷贝之后在这个地方点我们叫collect,然后点我们叫做for it,给他一个print。
03:18
好了,我们现在呢,运行看结果啊,同学们。看看能不能满足我们之前的要求啊,咱们的要求很简单,咱们就是希望能够去什么呢?把我们的第二个分区的数据保留,同学们看是不是我们的三和四呀,一号怎么了没了啊,所以这个方法呢,比刚才的方法呢,多了一个操作,就是那个索引编号啊,啊,它这里面就说了啊,将待处理的数据以分区为单位啊,发送到计算节点进行处理,那么这里的处理呢,可以指的是任意的处理,哪怕是过滤数据,在处理的同时可以获取当前的分区索引,然后这边有个小功能,获取第二个数据分区的数据我们刚刚已经做完了,那好,那我们还能做什么样的功能呢?比方说我想看一看我的数据都在哪个分区里面,是不是也行啊,所以啊,把这个来我们关掉,关掉以后我们来拷贝,拷贝之后我们写上零三啊,然后写个一好点击OK。
04:22
点击完成以后,我放过来,这是我们的他,那我这里呢,想做一个什么功能呢?我想做的功能就是说我想知道他们每个数据所在的分区,比方说大家看我不要了,我如果不要的情况下,那么默认应该是local星是八个分区对不对,但你是八个分区的话,我哪知道它的数据在哪个分区里面呢,我不知道,所以啊,我写上叫RDD点我们叫map,我们叫parts with index,然后你拿到的就是什么我们的index,再加上迭代期。拿过来以后我想干什么,我想形成这个效果,比方说我们的一在哪个分区,比方说在零号分区啊,然后呢,我们的二,比方说在我们的二号分区,咱们举个例子啊,还有我们的三,比方说在四号分区,咱们举个例子嘛,然后再来一个我们的六号分区,诶说我们的四,所以啊,我希望我的数据就变成这个样子,对吧?那原来数据什么样子的,原来数据不是一,然后二,然后呢三嘛,然后呢是个四对不对,那这里肯定要用到转换吧,所以同学们看我们的它点map,这个map呢,会把每一个number拿到,拿到以后你想干什么,我就想把那个分区号,分区号来这儿,我放到这里,分区号再把每个number放在后面,前面是我的分区号码,后面是我的数字,那这样的话就是我想要的效果了,所以来我们写上咱们叫诶它RDD等于。
05:59
就这一个,我现在试一试啊,运行一下嗯。
06:03
运行以后看结果。好了,同学们看有没有发现我们的数字一在一号分区,数字二在三号分区,数字三在我们五号分区,数字四在我们的什么,我们的七号分区,所以这样的话呢,就把咱们当前的这个数据的分区给它列出来了,诶,这在某些时候是非常有用的啊。
我来说两句