00:00
好,接下来呢,我们说一下这个commander啊,是刚才说的啊,它是大数据啊,框架中啊优化的一种手段啊,在面试的时候,它就是你要打的优化之一。因为它减少了数据的什么的IO。啊,减少了是一种IO传输。来看一看。Commander是MR程序中map和reduce之外的组件。它不属于这里面的哈。一会你就知道了,因为它有一个呃,适用场景啊,不是所有的这个场景都能采用command。如果说这个东西这这么好,那是不是大数据框架里面应该继承它呀。就是这样的啊,它是这个可选项,根据你的业务是否符合这个要求啊来选用的。啊好,那下面是command组件的负类是。别掉色。Reducer是干嘛的?啊,受汇总聚合的啊,类似这这种作用啊,那么它的父类居然是。
01:06
那你说提前在脉搏阶段进行了一次。提前进行了六次,好,再往下。Commander和reducer的区别在于运行的位置。虽然说他继承的是指就是,但是。啊,他俩的存放的位置不一样。怎么不一样呢?Commander是在map所在的节点运行。在卖台。那呢,是接收全局所有map的数据结果。一个是接收所有的一个,是不是只接收它本身的一个的。无区别吧?区别啊,数据量也不一样是吧,好。Command,意义就是对每一个map的输出进行叫。局部汇总。不能理解吧,啊叫局部汇总,你只汇总你内部的一个,你汇总你的汇总。
02:07
那那个呢,它是。全局。区别啊,那么他为什么要局部汇总呢?减少网络传输量。原来你需要传的是B1啊。然后再传一个be。那现在呢,你只需要传一个。第二是不是就OK了那。肯定是他传输的这个。少啊。OK。那再往下呢,是commander能够应用的前提是。不能影响最终的业务逻辑。这是根本啊。那怎么说它能影响最终的业务逻辑了呢?大家看一下。Commander的输出的KV应该跟reduce的输入的KV类型对应起来啊,这个是后面的一个要求啊,那这句话我前面那句不能影响最终的业务逻辑。
03:02
它怎么就影响最终的业务逻辑了呢?我们来看一下这道题。在map阶段,我这是多个map来算一个,呃,这些数的一个平均值。求平均值对吧,你大数据应该能求平均值吧,啊也能汇总,那肯定能求平均值啊,啊把所有数累加起来一起,那你看这道题。第一个map。啊,345。是吧,你你局部汇总了,那就相当于局部进行了一次reduce。那357加一起多少?是我啊。没问题吧,啊,说的还挺对。那下面呢,是第二个麦克,呃,卖车是二六。加几是不是啊。那四加九和四加五是不是最终你还得。再去。平时。
04:03
来看一下。你是不是这两个数,你要再算平均值的话,是不是都得过来除以二,这么算吧。吃这么上班,今天是不这上吗啊。要分着算的话,那么你如果是一个reduce全局汇总的话,那就是把五个数都加一起除以五。什么情况?那等于多少?二三。那你这个局部会完整之后的结果是。九。能理解吗?能转过来吗?数值不一样啊。那也就是说这个comer它不适合于这种。求平均值的。那它适合于什么样场景呢?汇总。啊,累加求和。呃,各种汇总操作是commander适合的。那么求这种平均值的一。一定一定不能用commander。
05:00
我说的话等着你,结果出错。啊,所以说这就是他使用场景啊,一定要注意啊。汇总的可以啊,平均值的不行。所以说这也就是说它为什么不是map和就是之间必须的一个组件。在这儿哈。好,这是。那下面呢,我们制定一个command啊,制定一个command。那下面是它的步骤啊,第一步呢,是制定一个要求继承。啊,重写蛇里面的。方法。这比他说的说。好之后呢,是在类中啊,关联一下你这个command。这个很好理解吧,是吧,就同样,你写完了之后,你得让系统能找得到。两步搞定。
我来说两句