00:00
我们现在已经了解了process function处理函数的基本用法啊,那我们可以看到啊,Process function确实是非常的强大,可以说什么事情都能做啊,不过呢,之前我们在测试的时候只是获取了一下当前的水位线,诶,那我们会发现那关于这个定时器到底应该怎么用呢?这个看起来是最好玩的东西嘛,诶,那在process方式里边,我们当然也可以直接调用它的上下文里边的time service去进行定时器的注册,那这个定时器注册的时候呢,只要传一个长整性,这就是一个时间戳,然后表示到那个时间点就会触发一个定时器,那触发那个定时器又怎么办呢?那就是要去单独的再去定义一个on timer方法了啊,那所以本身这个东西它就是这么去用,但是这里有一个问题,就是我们在process function里边。可以这么去写,但是呢,直接运行是通不过的,因为对于flink而言,只有按键分区流,也就是之前我们所说的kid stream。
01:06
才支持定时器的使用。那所以说在这里啊,我们是直接基于一个普通的data stream调了process function,那这里边其实是不支持的,所以这个一定要注意,哎,那这么看的话,看起来process function也不是仅仅只有这么一种啊,哎,那很显然我们在经过KY之后,K stream基础上应该还可以进一步去定义process function啊,那那个又是什么样的东西呢?所以接下来。我们再来介绍一下处理函数的分类,那基于这种想法,我们就可以把之前讲到的这个process function叫做基本处理函数哈,那处理函数就是一个庞大的家族了,除了这个基本的之外,另外还有很多其他的类型啊,其实我们知道啊,在data STEM里边,我们可以调一些方法,然后就生成了新的流类型啊,比如说像这个K之后得到k stream,然后呃,如果再进一步调window的话,就得到了window stream。
02:06
对于不同的流类型,其实他们都可以调底层的process方法。哎,那所以针对不同的流调process方法之后,传入的这个process function就会有不同的类型,那他们这些传入的process function呢,都可以叫做处理函数,但是具体的实现又有区别,像之前我们在window stream基础上就可以直接调process,我们一定还记得之前代码里边啊,在这个full window function全窗口函数里边,我们就是直接调了一个点process方法,这个时候传入的其实就是一个。Process window function啊,它就可以看作是处理函数里边的一元啊,当然从本质上讲的话,它可能更像一个全窗口函数,更像一个window function,我们看到是window function是连在一起的啊呃,那process是放在前面的,但是呢,它也有很多处理函数的特征,比如说诶我们这里这个上下文可以去获取到当前的处理时间,可以去获取到rock,可以拿到状态等等,而且还可以做测输出流的输出,诶那所以对于不同的流而言,都可以调process方法去实现对应的process方式,那这里边我们可以给大家简单的介绍一下啊,到底有哪几种link呢?主要提供了八个。
03:26
不同类型的处理函数,首先最基本的就是process方式,它就是基于一个直接调process,这个时候传的就是一个process方式。然后呢啊,那如果说我们做了KBY怎么办呢?KBY之后的k stream,同样我们也可以直接去基于这个k stream也可以直接去调用一个process方法,我们看到这里边所需要传入的呢,可以是一个process function,因为我们知道k stream本身就继承自stream嘛,所以他传这个也是可以的,但是呢,呃,这个将要被弃用了啊,一般不这么用,那我们用的更多的是什么呢?他就会传一个。
04:05
K的process方式啊,所以这就是分组之后的一个处理函数啊,本质上它还是一个处理函数,当然了,呃,我们点进去的话会发现啊,它本身是继承自这个抽象的复函数类,它本身跟那个process方式是没有直接联系的,但是呢,形式上它们其实都是process方式,非常的效啊,那这个是另外一个非常重要的方式,我们前面说的,如果想要使用定时器的话,那就必须使用它才能够实现啊。那另外我们前面讲到窗口的时候,讲到了有process window方式,开窗之后做process处理,诶,那这就是一个全窗口函数啊,它里边能够获取到上下文里边的更多的信息,与之对应的还有一个process or window function,那我们知道这就是基于data stream,不做KBY,直接点window开窗,哎,那接下来得到的是all window stream,那基于all window stream,接下来直接调点process方法,那要传入的就是一个process or window方式啊,这两个可以看成是一组啊。
05:11
这些都是前面我们大概都已经接触过的,然后接下来的呢,就会稍微的特殊一点,比如说还有一个叫做Co process方式,什么叫Co process function呢?抠我们可以认为是connect,或者说就是一个联合的意思。所谓的Co process function就是经过合并两条流之后,把两条流合在一起之后,经过connect这样的一个操作之后,然后得到的是一个connected streams啊,基于这样合并之后的理由,再去调用process方法,那么接下来进行处理的时候呢,要传入的就是一个Co process方式。那另外呢,关于两条流的合并,还可以使用draw啊,就是我们可以两条流做一个间隔连接,使用interval join之后,得到的是一个interval join的类型,然后它也可以调用一个process方法,要传入的呢,就是一个process join function啊,那那这些都是跟。
06:11
两条流的合并连接有关的操作,这个我们会放在后边第八章多流转换去进行讲解,那最后呢,还有一个就是broadcast process function啊,顾名思义,Broadcast是广播的意思,所以这是一个广播连接流的处理函数,那它怎么使用呢?那就是要基于一个广播连接流。Broadcast connected streams,而广播连接流那是需要一个普通的data stream和一个广播流broadcast stream去进行一个connect,哎,所以这个就看起来更加复杂一点啊,然后他们connect之后得到的这一个广播连接里由再去调用process方法,要传入的参数就是broadcast process方式,就是这里的这个处理函数了啊,那另外与之对应的还有一个叫kid broadcast process方啊,那跟前面这个非常类似啊,同样是基于广播连接流,只不过呢啊,那是之前我们不是普通的data stream,而是经过KBY之后的key stream,然后跟广播流进行连接之后再去调用process要传入的参数,就是这里的key broadcast process方式。
07:22
这两个相对会比较复杂一点,我们后边讲到广播流的时候,会详细的进行讲解。这就是关于处理函数的分类。
我来说两句