00:00
好了,同学们,我们接下来来学习下面一个方法啊,这个方法的名字我们叫做GLA啊,这个LA呢,它的调用还是比较简单的,在我们的格拉当中,它是不需要传递任何参数的,那么你不传任何参数的话,那么它的返回呢,就是这样的啊,将同一个分区的数据直接转换为相同类型的内存数组进行处理,分区不变,那这个我们来看效果吧,光这么理解可能也不是很方便,所以我们拷贝,拷贝以后写上一个零五,然后呢,写上一个他,嗯,点击OK。呃,点击完成以后,来把这个呢,我们写上叫LA,然后把这个呢我们去掉,行,那我现在呢,就把它写上我们的1234。然后呢,我们是两个分区来,我们接着看,这么这个时候啊,大家会发现我们现在呢,是两个分区,没有任何问题,但是你从这个角度来讲,你是看不到的啊,你的数据源当中,你得到的是什么,你还是我们的RDD,然后呢,它是一个我们的int,哎,就是这样的,那我们之前讲的那个叫做。
01:08
Fla map,它是什么?把我们的一个整体拆分成个体对不对?诶你看这是我们的list变成int对不对,这就是扁平化呀,嗯,咱们的list变成我们的int,那现在我们干嘛呀,我们把int变成一个数组,所以有没有感觉是一种相反的感觉对不对?同学们,哎,就是一个包装的感觉啊,那我们这里来看一看RDD点我们就叫格拉就行了,然后点一下叫VAR回车,回车以后大家看一下原来是int,现在变成什么了,变成了数组,相同类型的这个数组啊,就是这样,这个叫格RDD,那你这个格拉RDD的返回结果是什么呢?那我们就可以拿过来了拷贝,拷贝以后点我们叫collect,然后点,然后我们写上,因为你采集之后是数组啊,所以呢,我们make string写个逗号。
02:05
然后点我们这边打印啊,我们来看一看。呃,这个比较简单啊,这个前面讲的是那个扁平化,把整体拆分成个体,现在呢是把个体呢又合并成我们的整体,就是这种感觉啊。他这边collect得到的是我们的R是吧,然后诶,那我们这个打印是有问题吗?我确认一下啊,来我们的这个地方把这个去掉啊,来去掉,然后呢,我们点。它这个地方是我们的循环啊,这个我还理解错了,它里面有个date点,我们应该是这样啊,咱们在这边写上一个咱们的date点,我们应该是make string,然后写上一个逗号啊,然后呢,点我们的打印。好了啊,我刚才呢是直接它是R位里面有R了啊,这个collect会返回一个数组啊,它数组里面有数组就形成了这个效果了,嗯,刚才我这边给他写错了啊呃,所以有的时候呢,需要对返回结果呢,要了解它的类型啊,刚才呢,我们这边就直接打印的是宿组的一个字符串,现在我们想打印的是它原素的那个字符串,所以不太一样,嗯。
03:18
好了,来看我们一个分区的数据,就形成了一个我们的数度对不对,诶3412就可以了啊,所以这个呢,就是我们的格LA就是它了,那这个格拉姆我们一般怎么用呢?比方说来它下面呢,就有说法了,他说了我们这里呢,小功能计算所有分区最大值求和,分区内取最大值,分区间最大值求和,那这个功能我们完全可以来咱们拷贝,拷贝以后我们写上它,咱们加上个下划线,咱们写个test啊,咱们把这个小功能也顺道呢,就一块做一下了,那我这里放到这儿了,放到这里之后,那我现在把这个呢,我们去掉啊。
04:04
去掉以后他是这么说的,他说了,诶,我们现在呢,有两个分区对吧,然后呢,来我们写上三和四,那么接下来他说了,首先第一个分区内取最大值,那么分区内取最大值的话,这个不是二吗?那这个不就是我们的四吗?然后两个分区之间它要求和,那求和的话不就二加四等于六吗?所以这个是我们需要给大家计算出来的,那我该怎么做呀?首先啊,咱们要想办法干嘛呢?把我们的这个每个分区的最大值取出来,这个咱们在之前的那个map partitions的那个方法当中可以做到,那我现在换一个方法对吧?那所以我们RDD点,点了以后我们叫做LA,然后呢,点一下VAR回车,这个时候你会发现我们现在其实把一个分区的数据就已经怎么了,诶给它变成了一个宿组,数组就是集合,集合里有大量的方法可以让咱们使用,对不对?所以啊,咱们的LARDD点我们的map map里面不就是数组吗?那么数组的最大值你不就能求出求出来了吗?所以来我们写上点,点了以后大家想一想,咱们的这个地方是不是完全可以有个叫max呀,Max以后点VAR回车,回车之后,大家有没有发现每个分区的。
05:33
最大值已经全取出来了,所以我们写上叫max r DD,那么你现在是把每个分区的最大值取出来了。我们是不是要给他求和呀,那么求和怎么求和呀,太简单了,因为你的每个值都有了,所以点我们采集回来,你采集回来的话,大家看看这啥东西,这不也是个数组吗?那么也是个数组的话,来我们的collect,点我们的collect,然后点我们叫做什么?诶,咱们叫做上,这样的话,我们的结果不就出来了吗?我们的1234,那么在我们这一步当中,我们就变成了二和四,然后采集之后再求和,不就变成了六吗?所以啊,我们运行一下,那么这里的关键呢,就是将我们的一个分区的数据当成了一个数组,对不对,那这样的话就会好一些。
06:25
看看我们的结果呢,是不是我们的六?哎,没问题吧,同学们就是这样的啊。
我来说两句