00:00
大家就会想到,那既然这么说的话,在代码里边我们想要去设置这样的一个事件时间语义,诶,那应该怎么样去设置呢?大家想一下,我们在代码里边之前好像什么事都没做过对吧?哎,那就问题就来了,如果要是说什么都不做的话,我们代码里边是什么时间语义呢?对,默认是processing处理时间,大家回忆之前我们做这个,呃,窗口测试的时候,是不是都是我启动了之后,然后输入数据之后是等15秒钟,然后它就会输出那个结果啊,等待的这个过程,这是不是就是我当前机器时间在等15秒啊,哎,所以这个就很明显啊,这是一个处理时间,什么都不设的话,默认是处理时间语义,所以如果说我们想要用事件时间语义的话,那是不是得做一个显示的专门的设置啊,诶,那所以这个设置怎么设呢?非常简单,在环境里面设置,大家看这个env有一个设置的方法叫做set stream time characteristic。
01:00
然后里边可以传一个事件时间啊,那我们在代码里面先给大家简单的写一下。呃,接下来我们可以就在当前这个window下边,因为这个时间大家想到应该跟window密不可分啊,就一般我们都是在window里面去测关于这个时间的相关的一些性质,对吧?啊,那时间设置了之后,也是要用window来做体现的,所以我们就在这里啊,就我们还是叫window test吧,Window test或者我们这个直接叫这个。就叫就叫window test3版,这里边我们其实是,呃,事件时间语义对吧?呃,Event time window啊,我直接用这种方式来给大家创建一个测试的类,呃,然后接下来先把这个主方法写出来,Throws exception啊,大家就会发现我前面是不是先要去创建当前的执行环境,Stream execution environment get,得到这个env env。
02:07
啊,那大家就就看到了,之前我们一般做这个设置的时候,是只设一个全局的并行度,方便我们看那个按照顺序输出对吧?哎,这是这个啊,那另外除了这个之外,大家看其实还能设好多呢啊那接下来我们这里讲到的是设置流逝时间的语义对吧?时间特性啊,这个叫time character characteristic,然后里边它的参数要传的是一个time characteristic,大家看它是一个。枚举类型,这个枚举类型里边的有几个字,这个选取值,那就是processing time处理时间语义。Enjoy time摄入时间,另外还有even time对吧?啊,所以这里面当然我们就是选择这几个了。所以啊,在这儿我直接就给一个啊,Time characteristic点,大家可以随便选even time,这样的话就设置了全局的一个事件时间语义啊啊,那当然后边如果要是说我们还要做做这个测试的话,我可以把这个比方说从呃这个文本流里边读数据对吧,然后转换成sensor reading这样的一个po类。
03:23
可以把这个都全部引入后边,最后不要忘记env execute把它执行起来。这里大家注意啊,如果说我们后边想要去做这个开窗做这个处理的话,这个就完了吗。就是就是如果说呃,现在我们想要设置事件时间语意义的话,就已经设完了吗?后面直接开窗,它就是事件时间了吗?这肯定不是对吧?诶对,大家发现我们当当时说你既然是要事件时间,是不是必须得数据里面有啊,哎,那有同学说,诶那没问题啊,你这个3OR reading定里面不是有一个time STEM吗?啊对,大家想这里边这个字段是不是我名字,这个属性是叫time STEM flink并不知道你这是个啥是吧?诶所以是不是对于flink来讲,你必须得明确的告诉他,我当前的这个数据里边到底哪一个字段是我当前的时间戳对吧?诶所以后面肯定还要有这样一步操作啊,那这一步操作呢,是在当前的这个data stream上边可以调另外一个方法。
04:27
叫做大家看,叫做assign time Sam and water marks啊,所以这里边我先不给大家直接讲这一部分,因为这里还涉及到了后面一个概念,叫water mark,对吧,它是把这个时间戳和water mark一起做了一个设置。所以接下来我们先把这个放在这里,后边我们讲到再给大家做一个设置。
我来说两句