00:00
好,那接下来呢,我们要去KBY之后要做开窗聚合了,拿着我们的key的STEM啊点window对吧,然后呢,是一个滚动窗口,那就。To even time,奋斗对吧?点off,然后十秒钟,那就time.seconds。点SECOND10秒钟,好,那这是我们的得到一个开窗啊,那我们一步一步写清楚,得到了一个window的string啊,得到一个window的string,那接下来呢,我们要一个聚合函数,呃,那我们想啊,这个地方我们应该用什么呢?我们用哪个聚合函数呢?想一下啊,我们应该用哪个聚合函数。
01:15
好,Reduce,但是大家有没有想过,我们之前说过,在visit states当中。统计开张时间了。对,因为我们就是做一个简单的聚合操作,所以用增量聚合函数会更好一点,来一个我就累加一个,来一个我就累加一个,但是大家还记得我们要放这个统计开窗时间。那在reduce function当中,我问一下大家能不能拿到窗口信息?在reduce function和agg g的方式当中,它有没有窗口信息供我们提取啊?
02:15
有没有?那这不凉了吗?那用还能用吗?对吧,因为我们要补充开装信息啊,开装信息只有哪个函数有啊。哪个函数才有这个开窗信息啊?吗?直接就放大招呀。不还有一个这个吗。
03:00
温度方式里边不也有ten温度吗?对呀,你直接就放大招嘛,没必要吧,一上来就直接process。对吧。是不是window方向啊,不是只有process window方才有吧,其实window方式就有啊,对吧,Window方用apply方法调用啊,不是process对吧?Apply就行了,Apply呢,里边传一个window方式,它就可以拿到ten window的时间窗口,遇事不决process对吧?好,那其实大家也都清楚他俩的优先点。啊,那像reduce aggregate呢,它就是适合这种增量聚合的,因为它来一条聚合一条,节省这个空间,像班长之前说的对吧,那像window function,或者说大家刚才说process process呢,就是process window function对吧?那这个呢,它的特点在于它是全量聚合,来一条呢,他把数据收集到一个迭代器里边,最后呢,统一做处理,我准备输出数据的时候,我统一做计算,它的优点在于有窗口信息可以计算这种top n对吧,钱百分比,哎,类似于做这样的事情可以。
04:16
对吧,那你增量聚合这种就不太合适了啊呃,优缺点,但是呢,我们当前这个需求,第一它是做some做com的,对吧,所以呢,我希望他能够用增量去合,第二我也希望能有窗口信息,那大家说这个地方我们应该用谁。对吧,这个地方要用谁了。要用谁啊?我们分析了这一堆。
05:05
Reduce方式呢,它是增量聚合效率高。啊,Window方向呢,它是有窗口信息,那对于当前我们这个需求,我们应该要用谁了。哎,万达说了reduce加window啊,一看就是预习过的,你们之前在link学习的时候应该没有讲过这种吧,对吧,其实这样啊,来看它里面呢,有一个这样的一套API啊,什么样呢?看radio方式,大家以前用的是不是只传radio方式。你们之前用的时候是不是只有方向啊。对不对,是的话给我扣个一。以前用的时候用reduce,是不是只用reduce方程?
06:06
你看,班上不仅有能敲三遍敲五遍的,还有很多人能做到预习。对吧,还有很多人能做到预习,那如果说你之前用只用它的话,你肯定不知道嘛,你肯定不知道那个点。对吧,那这里面还有一种是它号叫reduce function,还要传一个什么。温度方向看见没?看第二个对吧,除了传热方程含量传温度方式,那有同学可能就想问了,那这又是增量聚合,又是全量聚合,到底谁说了算。注意它是这样计算的啊,注意看,如果说我们用的是第二种,就是它,我只劝他啊。对吧,用到它,那它不有两个函数吗?对吧,这个里边有window信息啊,这个里边呢,增量聚合它是这样子的,来一条聚合一条,用它做计算。
07:04
来一条聚合一条,用它做计算。用它做计算对吧,好,那接下来温方式干什么事呢?等我们要输出it嘛,对吧,它还有一个发射输出之前,把你算好的数据再交给温度方程做一次加工。啊,也就是说这边还是一样的,将数据会放到迭代器里边,但是此时它的迭代器只有一条数据。它只剩下一条数据。对吧,它只有一条数据,能不能理解这个事情。就正常的来一条,用它聚合一条,用reduce的方程聚合一条,来一条聚合一条,但是等我们要准备1IT的输出的时候,对吧,我要输出了窗口呢,正常要关闭的啊,可能要正常情况来说,对吧,我没有加lo的内嘛,所以在这个时候呢,正常的要去关闭那温的方式呢,它把radio方式处理的结果再接管过来。
08:15
再进行一次加工,所以这个温度方式里边参数还是一样的,我们将会看到迭代器,但是此时这个迭代器当中只有一条数据,这条数据呢,就是被reduce方式加工后,加工后的数据能不能理解了这块我的解释。能不能理解?没问题吧,好,那我们用的就是它啊,首先这边呢,你有一个reduce方式,然后接下来我们把后面写好啊,你有一个window方式。
09:01
啊,输出数据什么类型,注意啊,Window方这点进来e out tw。In out kw,看见没?那这个是out,那大家告诉我这个out是输,输出什么类型?对,Visit states还是他自己吧,对吧,其实在window方这里边我们无非对这个数据呢,增加了两个字段,STT和e dt2个字段,对吧,这是key,这是window的问题,好,那这里边这是我们看到的,那接下来呢,写这块内容,写这块内容呢有两种写法啊,一种呢是直接六一个visit states,然后呢,Value一点。然后呢,我们主要获取ST对吧,获取ST。这样的方式对吧,我们直接把这个std无所谓啊,更重要的是我把我后面写一下Y61点,呃,E dt。
10:09
Y61.vc对吧,这几个值呢,我直接拿,因为像前面几个值啊,我是不是从Y61Y62拿都无所谓啊,对吧,Y61.chy61点。干黑呀。对吧,然后歪了一点盖了。对吧,这几个指标我们可以直接去写,我们看一下啊VC啊呃,然后更重要的呢,是我们的什么指标呢?这个Y61.get UV抗加Y62.get u抗。对吧,这一种写法,那我们还可以怎么做呢?我们想啊,我们能不能这样,我问一下大家,我们能这样写,呃,这个地方呢,我我把这个啊把它写在这儿对吧,这样我直接拗一个这对象,然后更重要的呢,V1加V2对吧,那我能不能这样写,大家想啊,Y61.3。
11:09
UV好,然后呢,用Y61的。You can't。加上Y6,二的。You can't。然后最后呢,我们直接干什么。这个Y61。各位。这两种能不能行?
12:07
大家可以扣一波一给我看一下。对吧,好,那我问大家就是这个地方呢,咱们用的是这个滑滚动窗口,如果滑动窗口呢。如果是滑动窗口呢?咋了?没有声音了吗?就问号是什么意思?
13:00
那为什么敲问号啊,没懂。啊,它的图片是吧。行不行都让扣一啊。打黑的就好了,那如果是滑动窗口呢。如果滑动窗口。是怎么回事啊,怎么算?只能拗对了啊,如果是滑动窗口呢,只能用new的这种方式对吧,要不然这个数据就不对了啊,因为它这一个对象是要给多个窗口去用的,因为滑动窗口有时候一条数据是要涉及到多个窗口的,对吧?好,那这个地方呢,我们就无所谓,我们就用用第二种,第二简单一点对吧,有的指标呢,我们写的更少一点啊好,那我们只需要写五个就行了,那就是Y61的set,然后呢是我们的。
14:21
UV写了对吧,PV啊,五个Y61的gav加上Y62的PV。然后Y61.spvuv有了,然后是这个SV啊,Y61的。Get SV加上Y62的SV,好,接下来还有set,我们除了uvv。还有ug对吧,VALUE1的get ug加VALUE2的,什么get ug好,还有最后一个duration time对吧,VALUE1的,然后duration some,然后value1.getdusome加VALUE62拼接上我们的VALUE2的。
15:12
Get duration上对吧?啊拼接一下就好了,然后之后呢,把Y61返回啊,其他的指标呢,都根据Y6一来,那这样就简单一点对吧?好,那在这个地方我们来写一下。啊,这个地方我们来写一下啊,那我们说了就是要提取这个窗口信息,窗口呢在这儿window对吧,那我们俩window.get。Start,得到一个start时间啊,window.get and,诶,得到一个end时间,Window start window end,对吧?好,那接下来呢,我们取出数据,取出数据就input这个迭代器当中呢,我们直接取next就好了,因为我们之前说过,它里边呢只有一条数据,最后呢,我们out.connect也是把这个visit states输出在这个中间,我们要补充。
16:07
窗口信息对吧,那就是visit.set ST。ST在这里面呢,是一个finish,所以说我们要年月日加十分秒对吧,但是我们之前写了一个DAYTIME9,这个时候呢,可以直接用了啊点。那我们要变成,哎,这个地方就年约是十分秒要一个date对吧,六一个date。好,把这个start传进去,接下来visit.set e dt,好,然后date time。点to time to年月日十分秒对吧,另有一个date,然后呢,放一个这个眼底。对吧,啊,得到一个and就好了。好,那这样的话呢,我们就把这个数据开窗聚合搞定了,同时我们学到了一个新的东西,对吧,就是说这个开窗聚合的时候,它实际上是有这个。
17:07
聚合。的增量聚合可以加全量聚合一起来使用啊,一起来使用对吧?啊,这样的话我们就得到了最终结果,看单位得到一个result。得到result,好,那接下来呢,Result我们先做一个打印,因为还没写,还没学到对吧,所以呢,我们只能先去做一个打印。哎,这个又是中文的。好任务的启动,因为点。然后呢,我们还是把这个那边拿一下啊。全名拿过来作为我们的job name。对吧,这是我们的开窗和聚合啊,分组开窗聚合就类似于这样子的,接下来呢,我们要做一个测试,对吧。
我来说两句