00:00
好看一下,针对于grow啊,做了一个优化啊,针对于这个字段这个关键字做了一个优化,他说默认情况下呀。假如说你执行了一个这个语句,Select。Count新,然后from一个T表可以吧,T表然后干什么事呢?Grew by一个字段,Grew by name嘛。啊,Go by name go by name不太好是吧,Go by did啊就是DEP did就是那个它一个部门号,那这个其实就是求各个部门他有多少人对吧,各个部门都有多少人,那你写map reduce,其实你就是把部门编号作为T。对吧,然后到六阶段去累加。去做累加吧,也就是说你同一个你grow by后面那个字段呀,都会发给一个维正色去处理是不是啊啊一个re处理它这地方就是当一个K数据量过大的时候,又产生倾斜了。
01:02
啊,是针对于这种数据倾斜,我们要做一个优化,那怎么来呢。就是有很多一个聚合操作,它不需要在radio端就能完成,你可以在麦端进行一个完成,就类似于什么combine,还记得com这个组件吗?Com的这个组件。是不是就相当于每一个map先聚合一下,然后传给reduce去处理啊,传给reduce处理是这个意思。啊,你提前预处理一下,然后。它是很多聚合啊,加把我它进行之后啊,进行一个部分聚合嘛,是不是就combine。所做的事情啊,Com所做的事情,那最后的reduce端输输出一个最终结果啊,你本来从ma端,如果你不用command的话,你可能传的是500个爱的硅谷一过去可能吧爱的硅谷一,然后这500个呢,是有五个卖过来的。
02:01
每个脉搏是不是传了100个啊,而且都是爱特硅五一,爱特V1也是。总共有500个这个这么个东西啊,交给维度的去处理。效率很低,如果你之前60%当中,你加了com之后,他拿到的数据是什么样的?假如说每五个脉,每一个脉都是100个,他传过去的数据,其实就按照硅谷100个只有五条数据,是不是啊做了这个好处,来我们看一下啊,这个地方他说把这个这个属性给打开,脉端的一个聚合操作给打开看C。S。他默认就是打开的是不是卖是吧,他这个聚合OK,然后他还可以指定什么。脉搏端进行聚合的一个调。条目啊,来看一下它默认是多少。CTRLC,像这种只要能设置的一个值,它都会有自己的默认值是。
03:06
10万条是吧,哎,10万条它可以进行10万条的一个聚合,10万条的一个聚合,好接下来还有这个属性,他说有数据倾斜的时候进行负载均衡。它默认呢,是关闭的CTRLC。针对于grow by的一个set没写是吧,针对于grow by这个字段的一个优化的一个属性,它默认是false,那你要把这个给触吧t rue处。因为group by的时候很容易产生数据倾斜啊,很容易产生数据倾斜,所以它就会自动的把很多的一个map操作,把很多的一个教育操作啊,来转移给那去做,当然你卖。它这个聚合你要给打开吧,要给打开,所以说这几个属性是很相关联的,一起连起来用的吧,啊不是说你单独设置一个属性啊,就有什么样的效果的,就有很多属性对吧,相互关联一起来用的。
04:07
来看一下他是这样的,当你设置完了之后。它就会生成两个MR,第一个MR,那这个两个MR你还记得combine那个组件。最终继承的是哪个类啊?是不是类啊,那你知道有一个MR操作,其实就类似于所做的事情吧,所做的事情来对你针对于每一个map的一个输出结果做一个。累加,做一个累加,但是这种方式就像我们当时讲com组件一样,Com组件它不是MR整个过程当中必须的组件,是不是?不是的吧,是你要手动,你要想用的时候可以添加进去,为什么它不设置成必须的呢?因为他你看他多好啊,他都减少了数据的传输。
05:07
对,他有可能会影响最终逻辑是吧,影响最终逻辑,所以说这个地方。它有数据倾斜的时候进行负载均衡,它默认是false,就类似于这个combine,它不放在什么。必选的组件里边一样。啊,必然的组件,因为有时候你的一个处理业务逻辑它有可能会变吗?你假如加了combine的这个组件以后,哎,它有可能会变,是这样的,你要一定要清楚,就是你加com的这个组件,它业务逻辑不会变的时候,你才能加进去吧。哎,这个地方也一样,你要保证什么,你这个业务逻辑就是你针对于你每一个卖货阶段输出的结果,你要做累加的时候,你保证最后的一个输出结果它不会变啊,就像你做单词统计这种。
06:00
那它是没有影响的是吧?哎,你可以加这个combine啊,这种方式也一样,跟带这种方式也一样啊,它就是做了一个提前的一个聚合啊,提前的一个聚合。这是我们针对于,因为现在我们这个数据量很小,你说你测一下。你都达不到,是有数据倾斜的这种情况是吧,达不到,所以说有时候。
我来说两句