温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
嗯,之前呢,我们讲这个aggregate back的时候,我们就说了啊,嗯,它可以将我们分区内的计算和分区间的计算给它分离开,那么这样的话呢,我们分区内和分区间呢,可以做不同的计算,对不对,但是啊,我们说的是可以做不同的计算,我们从来没有说它不能做一样的计算,对不对,那比方说。我们现在分区内和分区间,它就想做一样的计算,能不能呢?那肯定可以啊,对不对,那所以呢,同学们看一下,我难道不能够把这个也叫XY吗?所以啊,同学们看啊,来咱们这里拷贝,我拷贝以后呢,我现在就写上啊,咱们来我们叫做什么呢?叫X加Y对不对,你这么写完全是可以的呀,那如果呢,你把这个写成零啊,你把它写成零,写成零以后,那么初始值是零,然后呢,我们在计算的过程当中,我们分区内是相同的key value求和,分区间是我们相同的key value求和,那么其实大家想想跟那个我们的reduce有什么区别呢?对吧?所以啊,这些方法之间其实非常的相似啊,这个咱们了解一下,还有我们这里的X和Y他们只使用了一次,并且呢是按顺序来使用的,所以呢,其实啊,咱们这是可以简化的,对吗?同学们,咱们盖LA语言当中匿名函数的质简原则当中,我们这里其实是可以简化成什么,我们的下划线加下划线的,同样道理,咱们这儿是不是也可以啊啊,所以有的时候代码呢,越写就越简。
01:31
单了啊,但是前提条件你得知道啊,它的一个使用方式和原则啊,所以说我们能看懂啊,你别到时候不懂什么意思,那就不行了,所以啊,咱们这么写是完全可行的,嗯。但实际上这么写了以后,我们发现呢,诶这个我们的,嗯,分区内和分区间,我们如果它的计算规则相同的话,其实Spark呢,给我们提供了一个更加简洁的方法啊来咱们这里呢,给它复制一下拷贝,嗯,咱们这里写上一个,嗯,还是写17吧。
02:02
好,拷贝一下点击OK啊。嗯,这里我们把这个该去的呢,就给它去掉一下,把这个呢,我们都去掉一下。嗯,这个不要了啊。嗯,不要了,以后呢,我们这里说一下写上啊来。嗯,如果我们这聚合计算时啊,计算时我们的分区内啊和我们的分区间,嗯,计算规则相同。啊,相同。那么如果计算规则相同的情况下,那么我们Spark啊提供了我们叫简化的啊方法就是你没有必要那么麻烦,非得写好几遍,对不对,没有那么麻烦,大家可以看到来我们的RDD点点了以后,它有个方法,这个方法叫for啊叫for by key,这个for by key呢,它也是函数颗体化,大家会发现更加的简单了,对不对,诶就是这样,它也有个value,也有我们的函数,但这个函数呢,就是它的规则了,所以拷贝拷贝过来以后放到这里,然后这边给他个零,你给个零以后呢,这个时候呢,点VAR回车,哎,不用VAR了,就跟这个一样了啊,咱们直接拷贝,拷贝之后放过来,这个就可以做掉了。
03:17
做掉之后,那么我们接下来我们来运行啊,咱们看结果。呃,这个结果对于我们来讲,我相信啊,就比较简单了,为什么呢?因为我们说了嘛,计算规则相同,可以简化嘛,那么简化的话就形成了这个效果,所以他们的计算其实就是word count,那么这里是A啊,大家概126不就是九吗?然后呢,我们B是三,然后是我们的四五,那不就是12吗?所以我们的A9 b12没有任何的问题,对吗?同学们,所以啊,这是我们的for by k又多了一个我们的算子啊。
我来说两句