00:00
好,同学们,那我们这个aggre啊,其实按理说呢,讲到这就可以了啊,咱们那个呢,其实就是一种简化版本,当分区内分区间的嗯,计算逻辑相同的时候,我们可以采用for back key来代替我们的aggregate back key啊这是没有任何问题的,那我们接下来呢,我们再把这个aggregate backy呢,再稍微的细化一些,什么叫细化一些呢?比方说同学们看我们现在啊,这边有个叫zero value啊,有一个叫U,然后分区内计算的时候,大家会发现这个叫V,这个V是什么意思,这个V就是在我们调用它之前的那个KV当中的V,就说明啊我们的分区内计算呢,是我们的初始值跟那个V做的操作,那么你返回的结果呢,跟这个U啊,它的类型是一样的,然后呢,分区间它是UUU就意味着其实你最终的结果是谁来决定的,初始值来决定的啊,所以这个地方呢,我们还得。
01:00
稍微的给大家去说一下啊,来,咱们拷贝拷贝以后呢,那么我们这里写上一个我们的18啊,然后写上一个三,这个呢,我们稍微的给大家解释一下啊来。把这个呢,我们改一下,改完以后我看看啊,咱们这里这里保持不变吧,嗯,然后呢,我们把这个去掉啊,咱们去掉。去掉以后把这个地方来啊,咱们写上。咱们的这个叫aggregate by key啊,它的最终的啊,最终的返回数据的结果,它应该和什么呢?和我们的初始值的类型,初始值的类型保持一致。哎,就是这样的啊。好了,同学们看啊,那我们这里咱们简单写一写,比方说我写个字符串,你写个字符串以后啊,咱们其实啊,就可以把这个咱们先给它来点,点了以后VR回车啊,回车回车以后大家有没有发现这个地方就变成字符串了,你原来是数字啊,现在变成字符串了,对不对?所以啊,这个就有点奇怪了,所谓的奇怪是什么呢?就是我们的这个结果呀,其实取决于我们传的什么样的值。
02:09
那这个你说那我就直接给int不就完了嘛,对不对,反正数字相加,但在某些时候你给数字是不行的,那咱们给大家举一个例子吧,啊来咱们举个例子,同学们看来我们现在做这么个操作,我现在想干嘛呢?我想求得呀,相同T它的数据的平均值啊,咱们做这么一个小功能,就是我们获取啊,咱们叫相同K的数据的平均值,那这是什么概念啊,咱们来咱们叫做平均值什么概念,就是说我们大家看A出现了几次呀,我们的。三次,然后呢,126是不是九啊,那么它的平均值是多少?平均值是不是应该是三,所以啊,也就意味着我现在想求得一个平均值应该是A什么呢?A3啊,那好我们的B大家看一下B是345,那么它也出现了三次,它的总和是12,所以呢,它的这个B的平均值应该是多少,B是。
03:09
明不明白同学们,这就叫做相同T的数据的平均值,那这个我们怎么来获取呢?我想做这样的一个功能,那么这个功能呢,其实大家会发现呢,其实啊,我们只要把A出现的次数得到,把这个123 126累加在一块儿是不是就可以了,所以其实是不是还是我们的V的数据累加,但是你要记住同学们,不仅仅是数据累加,它的次数也要累加。那么在这种情况下,你传一个我们的int好像不够吧,你传一个int是零,那么这个零跟126,可是那个次数在哪呢?好像不行啊,同学们,所以在当前的情况下,我们的处理方式就有所变化了,同学们看我们这里呢,就拿过来,咱们叫RDD,咱们点,点了以后咱们这里呢叫aggregate啊,咱们来咱们这里呢,写上个括号,这个括号我写什么呢?我就写上一个零逗号零。
04:08
我就这么写,你这么写了以后,大家想想,这个零就表述的是我们的A126所计算的那个初始值,而这个零呢,表述的是这个T,它出现的次数,我们说了嘛,这个表述的是什么呀?表述的是我们的一个相同T的初始值,对不对?好,然后呢,我们再来写个括号,我们写个括号以后,第一个是我们的初始值跟这个值里面的Y6。它所进行的什么?我们的计算叫分区内的计算对不对?那所以大家看一下我们这里是不是应该是一个tale对不对,或者叫初始值也可以叫tale啊,第二个是不是我们的V没问题吧,同学们,所以来我们就写上了,这个时候我们要去做一个操作,呃,什么操作呢?我们的第一个啊,咱们的第一个第一个是什么呀?是tale,那么你现在想干嘛?你想的是把数据相加,次数相加对不对?那所以呢,我们应该是T点下划线一,然后呢,再加上V,这是不是数据相加呀,但是你想要的是什么?还有我们的次数相加,那么次数相加是不是T点下划线二,再加上一,大家想想是这样的吗?这个时候是不是意味着我们的这个数量相加,次数也相加了,那么分区内是不是就计算完了,同学们是不是这样的?好,那么继续来。
05:36
哎,咱们往下往下以后你记住了同学们,我们的第二个我们的方,呃方法,它表述的是分区间的计算规则,那么分区间在这一步当中是不是已经得到了,那个ta中已经将数量和我们的次数统计好了,但是每个分区是不一样的嘛,分区和分区之间还得相加,对不对,那么所以呢,我这里写上啊,咱们叫T。
06:02
咱们叫做T2好了,那这里呢,我们就可以给它拿过来了,那括号我们叫T一点下划线一,再加上T2点下划线一,逗号我们叫T一点下划线,哎,不对啊,对对了啊,然后再加上T2点下划线二,诶,你这么写的话,大家想想我获取的结果最终是不是还是个tale,所以啊,咱们回来,回来以后写上一个new r DD啊,咱们这么写,这么写完了以后,它的类型应该就是个tale,这个tale当中,记住首先我们的这个key是保持不变的,对不对,所以写三个SP,然后呢,我们的V,记住啊,已经变成ta了,我们说过你给我什么值,我就变成什么值,所以在这里呢,应该是个int,应该是个int,诶这么写就可以了。那好了老师,那我这里平均值还没有求出来呀,诶但是没关系,你的这个他当中的它不就表述的是我们的总的数量吗,这个表述的不就是总共的次数吗?所以说要想求平均值就比较简单了,咱们这里呢,点我们叫map啊,这个map呀,咱们稍微说一下,大家会发现其实我们的这个地方。
07:15
Key是保持不变的,为什么?因为我们只要对它做操作嘛,所以呢,我们转换的不是key,我们是我们的V,那么在这种情况下,所以其实我们还有另外一个我们的算子可以让我们使用,叫map,咱们叫values,这个map values是什么意思呢?就是说我们当PV类型的数据,我们K保持不变,只对V做转换的时候,我们在这个地方就要做这个数据处处理了啊。那好了,那么我们现在呢就来试一试,记住啊,K不变,我们拿到的就是V,那么你拿到的是V的话,这里呢,我们写上一个模式匹配,我们叫case,这个case呢,第一个就是number,第二个就是count,那么你想干嘛?我就想求得它的平均值,那就是number除以count。
08:03
大家想想是不是这样的,所以说最后的结果是什么样子的,来VAR回车,回车以后大家看一下我们的。你会发现这个是不是我的K,这个就是那个平均值,好来验证一下。点collect collect点一下我们这里呢,给它来一个啊,咱们这里呢,For it,然后print。好了,那我现在呢,给他来并行啊,看一看跟我预想的结果是不是相同的,那么我们在这里呢,需要啊看看它的结果,嗯,如果没问题的话,这个小功能呢,其实就算是完成了啊,我们的预选,预选结果呢,应该就是A3B4。没有问题吧,同学们,哎,就是这样啊,好了。
我来说两句