温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
已经知道了弗link里边的窗口概念是什么,也知道它的大致的分类,那接下来呢,我们就要看一看窗口到底该怎么用了,代码里面到底怎么去调啊,那首先我们先看一下啊,做一个这个窗口API的概览啊,就是整体来看窗口到底该怎么用呢?呃,首先要做一个分类。就是有两种创建窗口啊,调用窗口的这种方式,就是所谓的到底是否按键分区,哎,是否按键分区,就是前面到底是不是要K。啊,所以对于这个弗Li克而言,我们可以在k stream上开窗,也就是分组之后开窗也可以,怎么样呢?哎,没有按键分区,没有分组,直接data three上直接开窗也是可以的,这是两种不同的用法啊,一般情况比较推荐的就是KBY之后再开窗,因为之前我们说过啊,所有的这个聚合统计都是基于KBY之后才才做的,对吧?哎,那你窗口一般要做计算要干什么呢?那可能比较常见的也是做一些聚合统计啊运算啊什么的啊,所以说比较推荐的还是KBY之后直接,呃,就是先做KBY得到k stream之后,然后再去开窗,这样的效果是所有的数据会按照K分发到不同的对应的那个分区里边去,然后开窗的时候呢,只会针对当前K里边的数据进行收集,进行计算,他们都是每个K都是独立的啊啊每个K上大家可以认为都定。
01:32
这样的一组窗口各自独立统计计算,那具体代码调用就是stream.kby,先指定K,然后点window,调用window方法去开窗就可以了。然后另外就是非按键分区,非按键分区的话,那就是直接基于stream直接开,直接开的话没有点window方法啊,它是做什么的,点window or要做这个点WINDOW2方法啊,然后去定义这个窗口,这里大家需要注意window or呢,相当于就是要把所有的数据必须要收集到一个窗口里边去处理,这相当于就不能分区了呀,你分区的话还怎么在一个窗口里边统计呢啊,所以如果用WINDOW2就会相当于把当前的并行度强制变成一。
02:23
所以flink官方不推荐大家这样用,非常不推荐啊,所以一般情况我们都是先KBY,然后再去window。然后接下来开了窗之后难道就没事了吗?诶,不是的啊,大家要注意这个开窗操作,这里的这个window呢,点window并不是直接定义window具体操作的,它里边要传的是一个window a sign。什么叫signer啊?之前我们有过那个time stamp a signer嘛,就是一个时间戳提取出来做分配的一个分配器,所以这里是一个窗口的分配器,也就是说它指定当前的数据到底分配到哪个窗口去。
03:05
而后边还要跟一个什么一个aggregate啊,那那这里aggregate也只是一个事例啊,不一定非要叫aggregate,也可以是其他的一些一些方法,那后面跟的这个方法就是具体窗口要执行的计算,所以这个后面传的这个东西呢,我们往往把它叫做window function啊,那所以这两个部分就一个是窗口分配器,一个是window function窗口函数,前面这个表示数据到底要。怎么样分配到窗口里面去,要分配到哪个窗口里面去,这相当于就把窗口的这个类型定义了,你是滚动时间窗口还是一个滑动技术窗口,数据到底应该属于哪个窗口,怎么分配,这个就都定义好了。而具体要做的计算操作是在后边的这个window function里边指定的。哦,那这两个合起来才是一个完整的operator,一个window算子,这就是关于整体窗口API window API的一个调用的过程。
我来说两句