00:00
好,那么接下来呢,我们去看一下视频啊,我把这个呢,CTRLC退掉,然后重新进啊这些配置信息呢,我们呢还原一下对吧,因为又会对我们接下来的测试有影响,所以呢,我们就还原一下,呃,接下来讲的是什么呢?看的。去虫对吧,去虫那这种方式注意它就会只有一个V。啊,无论我们设置了几个,它都只有一个维散,因为我们用的是count distinct的,它是要将所有的数据呢,都发送到这一个V03里面去做驱动。啊,他只能这样,因为他可能第一条数据跟最后一条数据重复了呢,有可能对吧,他要把所有数据发送到同一个。流程。Count的是这样的,那我们想我们先把这个去测一下,大表我们已经创建过了,然后数据累加过了,对吧,已经导过了啊,那接下来呢,我们去走一个这个任务c select count新ID。
01:08
从大表当中去获取的一个数据。哎,我先把这个退掉啊,对,这个错了,因为我们没有设置那个维斯个数,没有设置的时候,它负一,那它等于一正常对吧,我们去设置一下啊,看一下这个情况。就把这个得设置一下,好,我们设置为五个啊,然后接下来呢,使用这个我们是不是手动都设置了五个了。对吧,我们再看一下它有多少个reduce任务。因为我们当我们负一的时候,数据量摆在这也也不够128兆怎么样的,对吧,只有一个啊,全局只有一个维色,它是把所有数据发送到一个reduce里面去做系统的,那你比如这种情况下,很有可能你内存一出,或者说这个任务怎么样跑不成功失败。
02:10
扛不住了,那我们想啊,你要做驱虫,我还要想B型的做驱虫,那怎么办?现在是不是整个。Count的一个个数啊,我们求这个个数对吧。那我们还可以怎么做呢?这块东西又是分钟表是吗?那不用分钟表行不行呢?你用分钟表的话,其实也一样啊,你读这个数据,你又没有跟同的状语没什么关系啊,这块他也不是状语,它是单表查询啊。也就这块驱虫,我们在生产环境当中,如果说这个数据量很大的时候,一般不会用count这种方式来驱除。
03:01
而是用这样的方式来看。select count新。From from这个呢,我们from t1表啊,FROM1个子查询的表子长表怎么写呢?Select ID from,刚才是不是叫big table。Grow back ID这一张是善的表,是不是除了能做到去重之外,咱们的group back是不是也能做驱虫的效果驱除,对吧?而且我们group by ID的时候,他如果将ID会设置为K。因为我们有五个reducer,它就不将ID放到不同的reducer,那每个reduce各自驱虫,把它合并起来,是不是我们最终的驱虫效果,因为既然是驱虫嘛,我们按照这个内容进行哈希就不如果你两个数据一样,一定进到的是同一个位流的。
04:00
对吧,那我只要并行的去做去容是不是就好了。能想明白这个问题吗?对吧?我这个地方group by ID是不是相当于它在做B型的驱动啊?每一个reduce里边都在对各自的reduce进行去重化,因为我们按照ID的哈希值,如果你ID相同,一定进到同一个reduce,那我只要把这一个reduce去重,把另外的也去号虫,最后数据给它合并在一起,是不是我们对于全局数据做了一个驱虫效果?能理解这个点了对吧,好,那我们走一下啊,但是呢,它就会有两个任务对吧,先呢,Go back这个任务做去除,然后再去求什么康新对吧。看第一次这个任务而言,它是几个五个任务,刚才我们虽然设置了五个,但是用count c的时候,它是不是全局还是只有一个维六三,对吧,效率低,因为只有一个维六四,你只有一个人工作呀,对吧,所以说你效率比较低啊。
05:08
当然还是那句话,数据量大的时候才能看到理解效果,如果说数据量小了,反而我们启动两个任务的时间就怎么样,就长了,你看这这个时候肯定总时长比刚才要长,对吧,但是数据量太大的时候,你要做去用,那你就要知道用这种方式。好,刚才是20多秒,我记得现在59答案是没问题的吧,99947啊,来看之前的是不是99947对吧?啊也能做到这个驱动效果,刚才28现在怎么样。59啊,反而比刚才长了,主要是他跑两个任务啊,跑两个任务导致的啊,像这是我们所说的,在生产环境当中,一旦遇到这种数据量特别大的时候呢,就不要用count distinct的这种方式去做它的一个去除了啊。
我来说两句