温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
同学们,U daf这一块呢,还是有一定难度的啊,这个同学们下来呢,多多练习,咱们接下来把这个课件呢稍微的梳理一下,他说了啊,咱们强类型的data set和弱类型的data frame都提供了相关的聚合函数啊,比方说count呀,嗯,Avg maxin之类的是吧?嗯,除此之外,用户可以设定自己的自定义聚合函数,通过继承user DeFined aggregate function来实现用户自定义的弱类型具有函数,大家还记得吗?咱们那个弱类型呢,是不是就是继承它呀,对不对,但是呢,从Spark3.0版本之后啊,这个我们已经不再推荐使用了。它统一采用强类型聚合函数叫aggregator,这个咱们其实在那源码中已经看到了,对吧。他下面举了个例子啊,说需求计算平均工资,就是计算我们平均工资有很多种方式啊,可能不见得非得用10SPA蛇口,用些别的也可以啊,比方说哎,用最基本的r DD Spark call当中的RDD就能实现,但是你会发现啊,实现的步骤可能相对来说都转来转去,然后再做聚合,对不对啊,这个要比咱们直接用那个circle口要复杂一些,然后接着往下,那还有一种呢,叫累加器啊,累加器为了避免我们的沙uffle啊,性能可以得到提高,做一些数据数值的累加,对吧?那么这里的步骤呢,其实相对来说也是比较复杂,它是为什么呢?因为你要实现自定义的累加器的话,会有很多的方法需要重写,对不对?所以啊,跟咱们自己写累加器,写那个u daf也差不多啊。
01:37
好,下面呢,就是u daf了,它是一种弱类型的操作啊,呃,弱类型呢,就是继承我们的u daf是吧?U aggregate function就是并重写它其中的方法,那在其中的方法呀,很多的方法名啊,你要搞明白,其实功能并不复杂。好,接着往下啊,下面下面呢,我们再往下走,往下走,往下走是UDAAF的强类型,那强类型的话就是我们那个叫aggreator了啊,然后呢,我们要定义它的泛型,这个泛型呢是in buffer和那个out,对吧,你把这个搞明白以后,里面的方法其实也不难理解啊,什么words呀,嗯,什么reduce呀,什么zero啊,对不对?然后呢,接下来有一个固定的写法,就是那个叫做我们的编码器啊,用来做编码用的,如果是自定义的话,一般就是product,如果是我们SKY自带的类型的话,一般就什么double啦,Sky in啦,Long了,都是有的啊,嗯。
02:36
好,接着往下啊,下面呢,就是我们的强类型操作,就可以把我们的聚合函数呢当成查询列来进行查询,这里采用的就是DSL语法,对吧?那么或者呢,在我们10SPA3.0之后呢,采用aggregator啊来代替我们的这个,嗯,U daf是吧,就是代替它这是可以的,但是重点就在这儿了,为什么呢?因为你的circle是一个弱类型的操作,而我们的这个aggregator呢,是一个强类型的操作,所以在这种情况下,他们中间啊,怎么了?哎,是不能够联合使用的,但是从十八三点零之后呢,这边可以做一个转换,转换以后就可以用了,对吧?诶就是这个意思啊。
03:16
好了,那这个呢,其实我们看到之后问题就不大了啊嗯,好,说到这儿。
我来说两句