00:00
好,那接下来呢,我们看。开窗。聚合。啊。呃,那还是一样的两种方案。我们用哪个呢。我们用哪个呢,大家想。是两个都可以,还是有一个可以,还是两个都不可以呢?啊,两阶段聚合。啊,嗯,对了啊,对了。没毛病啊,嗯,正好相反嘛,对吧,正好相反,这个他可以啊,这个他可以对吧,他不可以啊。他不可。呃,原因很简单,原因很简单,我们想啊,为什么刚才这个地方不可以。大家想为什么他不可以?为什么这个地方它不可以。
01:04
因为他来一条输出一条,来一条输出一条,而我们开窗呢。是不是一个窗口输出一次啊。对吧,所以数据量呢,并不会增多。对吧,所以开窗聚合呢,我们一个窗口是不是输出一个结果呀。对吧,所以它的数据量呢,不会增多,所以可以用没有问题啊,但是呢,为什么一具盒用不了呢。那预聚合这种方案这么好?为什么用不了呢?能不能想想通,能不能想明白。为什么浴具盒用不了?
02:04
啊。想不通吗?那一具盒这么好用的东西,怎么用不了?想不通吗?这种该着重发话了。他最终输出的还是全部计算过后的结果,是什么意思啊?没懂。他最终输出的,我把这个摘出来啊。没,没太懂班长,班长说的啊,班长说什么呢?说他最终输出的还是全部计算过后的结果。我没太懂是什么意思。啥意思啊?班班长你解释一下呗,这个东西。喻句和你说的这句话。一个窗口内的数据。
03:00
然后呢?一个窗口内的数据。啊,加了一句对吧,叫一个窗口内的数据,我还是不懂,这个连起来我还是不懂是啥意思。可能我的理解力有点差吧。他最终输出的还是全部计算过后的结果,说一个窗口内的数据。我不懂。我我直接说答案了吧,好吧,预聚合为什么不行呢?因为很简单,你预聚合,你看你这个定时器,假如说定五秒钟对吧?好,那这是一秒来的数据,跟那个六秒来的数据,它会聚合到一起,它很简单,它会丢失原始的时间。懂了吗?我这样一说,大家是不是就懂了?
04:01
对吧,因为你做了一个浴具盒,然后呢,你时间没了呀。你原本的那个时间没了呀。对吧,你无论按处理时间来,还是按事件时间来,事件时间我们更不聊了,你不可能你五秒钟数据,你不可能把所有的保量,保量也没用,对吧,你按处理时间来,你看啊,第一条数据来了,你也等着吧,等着五秒以后再输出,那你这个时间不都不对了吗。是不是有可能就窗口的数据全部都不对了呀,对吧,它会丢失这个原始的数据时间对吧?啊是这个意思,所以呢,它呢刚好可以用这个什么加随机数实验双重聚合对吧?那我们来看一下这个加随机数实验双重聚合怎么写一样的,首先呢这样。注意这边多了一个开窗对吧,好,那在接下来呢,把这个拿过来。
05:00
再把这个随数去掉,去掉以后呢提诶再做一次聚合对吧,这个是可以的,因为它里面呢多了一个开窗,因为开窗我可以保证这次结果呢,一个窗口只有一条数据。对吧,最后一条数据,但这里面有一个点需要大家关注一下,什么点呢?来我把图一画大家可能就清楚了啊,这里面隐含呢,你现在光对着这个去想,可能很难想到,来我们画个图大家就就明白了啊。首先还是我们两个啊度对吧,A。诶,好。AA,他呢,这个时间啊,我开的是一个五秒的窗口。然后呢,它的时间是一。二。三。四可以吧,他们四个人处于同一个窗口,没毛病吧?啊,那咱们来看最终的结果它对不对啊呃,看是不是聚合会变少,首先呢,第一步加随机数对吧。加速入。那简单呗,对吧,呃,第二步K吧。
06:03
我们先把图画好,我们一条一条数据看啊。K啊,这边呢是K。啊,然后呢,开窗聚合啊,这边是开窗聚合对吧,不要忘了开窗聚合以后呢,把这个干掉,把这个随书干掉,对吧,再聚合一次啊,这是一个map。这是去掉随机数对吧,这一步呢,去掉随机数,然后呢,再K。重新K做聚合吧。是不是图这样画有没有毛病?对吧,这个是加随机数啊,这个也是一个map加随数对吧,这边map去掉随数,这边呢,也是一个K。这边呢是聚合,假如说上也好也好,对吧,这个地方注意开窗聚合啊。这个图有没有问题?能跟上吧,这个图应该没毛病哈。那我们来看啊,这里边其实还隐含了有一个问题啊,有一个问题什么问题呢?来看啊,A来了,A来了呢,我拼接一个A1可以吧。
07:03
啊,我拼接一个A1好,那接下来K。K开以后呢,做这个聚合,但是呢,哎,我此时A1来了,A11对吧。大家注意它不输出啊,这条数据现在这卡着对吧,因为我开窗了,我跟刚才直接聚合是不是不一样,直接聚合这条数据是不是该输出了,这开窗不输出啊,在这等着对吧?好,那么接下来第二条数据来了,第二条数据啊,随数加A2 a2呢,比如说进到这。A21对吧,聚合以后A21,但是呢也不输出对吧,在这等着,因为我沃特玛没到啊好,那么这是第三条数据,第三条数据呢,比如说我加的随机数是一好一呢进这A1好,那聚合以后那就应该是几啊二了,对吧,聚合以后是二,那这条数据不存在了,因为reduce聚合吧,同理这个4A来了啊,A2加随数A2进量。这个呢,变成二,那一就没了,一就没了,比如说现在来了一个wordmark b对吧,B这张数据来了个六啊,我就不跟A混在一块了,对吧,假如来了个六,来了个六呢,是不是触发它执行啊,是不是两个窗口就关闭了对吧?它输出什么,他输出他的输出是A。
08:14
一二这一条啊,它的输出呢,是A22是不是只有一条啊。是不是是不是只有一条,好,那么接下来呢,去掉随机数,它是解,它是A2。它是减,它是L。对吧,好K按照A分组吧,那么A2就进这。哎,同理,A2进,这是不是输出的是A4啊。来看啊,本来我如果不做这个处理,是不是某一个病度会同时处理这四条数据,现在呢,哎,你处理链条,你处理链条,你处理链条。看上去好像处理更多了,但是数据倾斜问题是不是解决了?是不是?有没有毛病?可以吧?
09:02
这块能明白吗?就是目前到这块为止,大家能跟上吗。跟上扣一啊。嗯。好,那这里面呢,有一个隐含的问题,比如说我来了一个。A7。比如说我来了个A7对吧,好A7呢,我假如说加随机数是A1啊A1对吧,好,那进窗口,那它跟这个不属于同一个窗口嘛。对吧,它不属于同一个窗口嘛,那就是A1,然后呢一对吧。A11对吧,好,那干掉随机数,比如说关窗了,后面来了一个B10啊B20吧。直接B20可以吧,A7后面来了一个B20,好,这个数据输出输出的话这边有个A1。A1呢,进这A1完了A5。
10:02
变成A5了。这个问题能明白吗?就能知道我刚才在写什么吗?就是看啊,我把这个图重新画一下啊,首先呢,这样,因为里面东西太多了。第一次加随数,加随数以后呢。我把第一轮的数啊干掉对吧。好,刚才呢,是不是有一个零到五窗口输出了一个A4啊。对吧,有什么呢A。是1234吧,时间周二对应的1234,现在呢,后面跟着一个B6对吧,这个是我刚才画的,是不是输出这个结果了,有没有毛病。没毛病吧?这个有没有毛病啊。
11:01
有没有?跟上啊,这边是开窗。聚合。对吧,好,那么接下来呢,我来了个A7,来了个B11对吧?好,A7先来啊,A7来了之后,好,那A1啊,就变成A1了,可以吧,啊下滑一加个随机数嘛,好那么进窗口里边,那么就变成A1。一啊,只有一条对吧,好,那在这卡着卡着呢,现在不输出等什么时候呢。B来了B11对吧,我的办法更新了,好更新以后呢,咱们俩。更新以后这条数据就该输出了,输出呢,这边去掉随数对吧,这是A1。A一切角C说A1吧,A1跟刚才A4是不是要合并,因为你这就是一个普通的sum。对吧,你就是一个普通的reduce,那这两个K相同,它肯定要合并,那就变成A5了,那这个结果还对吗?我两个不同的窗口,那第一个窗口是A4,第二个窗口A1,我应该有两个结果,是不是一个呢A41个呢,A1,我是不是要两个结果,你不能说给我一个A5吧,这个不对,是不是。
12:10
这个A5是不是不对呀?但如果按照我们这样所写,它是不是应该等于A5啊?那这个问题怎么办呢?这个问题怎么办?大家告诉我。这个问题现在能看得明白吧,对吧,他直接结果输出了A5,但是呢,我很明显我要一个A4,一个A1,我是两个不同的窗口,对吧,你不能把两个窗口合并了呀,那我开窗没有意义了呀,对吧。我是要开窗聚合的,你最后把多个不同的窗口合并到一起了,我不要这样。那这个问题该如何解决呢?
13:06
想一想啊,动一动自己的小脑袋瓜对吧。去思考一下。将A添加上后缀,添加什么后缀?心走啊,只有我们看辛总啊,只有辛总配合我类目类目啊。加什么后缀?啊没了,加上后缀,加什么后缀呀。窗口时间对了。没毛病。啊,就是郑总所说的窗口时间,那么在这边输出的时候,我带上什么呢?窗口时间。加上一个窗口时间对吧,而这边重新分组的时候K啊,重新分组的时候我不要按照A分组对吧,我要按照A拼接上什么呢?窗口时间。
14:12
我按照这个内容进行分组,那你想不同的窗口它A大家都一样,但是窗口信息不同,它还会把不同的窗口合并到一起吗?还会不会?还会不会大家想?能明白吗?就是说我们窗口输出结果以后。我们呢,要把窗口时间带上。对吧,接下来按照原本的K加上窗口时间重新进行K半,那么这个时候你看啊,你这个A4是零到五吧,你是A0对吧,AP那个零,那我呢是AP那个五,我俩会合并吗。他就不会合并了。能明白吗?啊,所以这个点是我们要注意的,就是在当然在这边也给大家写到了啊在这。
15:03
第二阶段就好,去掉随机数对吧?去掉随机数按照原来的T及window end,当然你用start也可以随便啊,你用两个也行,对吧,任取一个都可以。啊,也就是说我们上游呢,一定要加上窗口时间啊,就是你输出的时候第一次结果对吧,一定要加上窗口时间听懂。听懂。听懂扣一。如果你不加这个窗口时间,那完了你会把多个不同的窗口合并到一起了,结果就不对了,对吧?当我们加了这个窗口时间,是不是就没有问题了?对不对。没毛病吧,啊,这样来处理这个数据倾斜的一个问题啊,好,这是K8后开装聚合的一个问题。
我来说两句