温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
好了,来,咱们接下来看一看这个map part课件中是怎么说的啊,它这里面函数的签名啊,就是它的声明了,那这里面是迭代器,然后呢,函数说明,将待处理的数据以分区为单位发送到计算节点进行处理,这里的处理呢,可以是进行任意的处理,哪怕是过滤数据啊,你把数据过滤掉也可以,反正我只需要返回一个迭代器就OK了,那么这个时候大家可以看到,在我们当前的这个地方,它用的就是一个过滤的功能,其实这倒无所谓,你看你怎么去做,下面呢,有一个小功能,说获取每个数据分区的最大值,把这个小功能我们一块给它做一下啊,来把这个关掉,关掉以后来我们写上这个叫下划线,叫test,那我现在呢,咱们拿过来放到这儿啊呃,放到这儿以后,同学们看我把这些东西呢,我都给它去掉,我现在还是1234还是二,我现在想把每个分区的。
01:00
最大值取出来大家看一下,那么按照咱们之前的分析,一二三四两个分区的话,那么第一个分区应该是一和二,然后呢,第二个分区应该是三和四,那么每个分区的最大值,同学们想一想,每个分区的最大值是不是应该是什么呀?我们的二,然后再来一个是不是应该是四呀,那这个你要拿之前的那个map算值行不行呢?很难做到,因为map算子呀,它是每个数据拿过来,我是分不清这个数据来自于哪个分区的,对吗?但是我们现在的mapb partitions它就能够,诶把一个分区给你,那么我取它的最大值不就没有问题了吗?所以啊,用这个map partitions还可以实现一些特殊的我们的需求,那好,那么我们来看一看我们的RDD,点我们map parts。然后你给我一个迭代器,我要返回一个迭代器,诶这是我们的业务要求。
02:02
可是呢,我说过了,你要做的是把这个迭代器当中的我们的什么呀,我们的那个最大值取出来,那所以呢,我们来我们叫做点,我们叫做max,它就自动包含这个功能,那好,那我现在呢,取最大值的话,那其实这个迭代器是不是就用不上了,为什么呢?因为我需要返回的就是我们的最大值吧,但是你会发现同学们有问题了,什么问题啊,报错了。为什么报错,因为我们这个迭代器的最大值它是不是一个呀。可是我们要的是迭代器啊,你不符合我们的这个要求,那肯定是过不去的嘛,那怎么办?那好,那我现在就得想办法把它变成迭代器。所以啊,这个我们想这个办法,同学看我在外面包一层,给他一个什么我们的list,然后在点再给他一个迭代器,你这么写不也就行了吗?只要你能得到迭代器,怎么做其实都是可以的。好了,那我现在呢,这边我们就来了,咱们叫map,我们的RDD,好,我来看看,我们这边拿过来点我们的collect,然后for it,我们的print,记住了,我刚才分析过了,咱们现在得到的结果应该是二和四啊,看看我们的结果是否正确。
03:31
我们的结果是不是正确呢?我们来看一看,诶,二和四没有问题吧,同学们,这就是我们用这个map partition实现的一个小功能啊,这个呢,其实同学们需要自己去想一想,什么地方会用得上,对不对,嗯。
我来说两句