主页 > 新闻资讯 > 大数据培训:Flink流处理时间概念解析

大数据培训:Flink流处理时间概念解析

作者:张老师 浏览次数: 2021-03-10 17:39
基于Flink流批一体的数据处理思想,在数据处理的执行上,一个典型的特点就是,数据具有时间的属性特征。因此在Flink当中,流处理就会涉及到不同的时间概念。今天的大数据培训分享,我们就主要来讲讲Flink流处理当中的几个时间概念。

大数据培训:Flink流处理时间概念解析

Flink的三种时间概念

Flink根据时间产生的位置不同,将时间区分为三种时间概念,分别是:

事件生成时间(Event Time)

事件接入时间(Ingestion Time)

事件处理时间(Processing Time)

数据从终端产生,或者从系统中产生的过程中生成的时间为事件生成时间,当数据经过消息中间件传入到Flink系统中,在Datasource中接入的时候会生成事件接入时间,当数据在Flink系统中通过各个算子实例执行转换操作的过程中,算子实例所在系统的时间为数据处理时间。

在Flink当中,基于时间的操作(比如Table API和SQL中窗口操作),需要定义相关的时间语义和时间数据来源的信息。时间属性,可以是每个表schema的一部分。一旦定义了时间属性,它就可以作为一个字段引用,并且可以在基于时间的操作中使用。

时间属性的行为类似于常规时间戳,可以访问,并且进行计算。

1、事件生成时间(Event Time)

事件生成时间是每个独立时间在产生他的设备上发生的时间,这个时间通常在事件进入Flink前就已经进入到事件当中了。

事件时间语义,允许表处理程序根据每个记录中包含的时间生成结果。这样即使在有乱序事件或者延迟事件时,也可以获得正确的结果。为了处理无序事件,并区分流中的准时和迟到事件;Flink需要从事件数据中,提取时间戳,并用来推进事件时间的进展(watermark)。

2、事件接入时间(Ingestion Time)

事件接入时间是数据进入Flink系统的时间,它主要依赖于其Source Operator所在主机的系统时钟。需要注意的一点是相比于其他两者,他是不能处理乱序事件,也就不用生成对应的Watermarks

3、事件处理时间(Processing Time)

事件处理时间是指数据在操作算子计算过程中获取到的所在主机时间。在处理乱序事件时,他不是最优的选择。Process Time主要用于时间计算精度要求不是特别高的计算场景,比如延时比较高的日志数据。

处理时间语义下,允许表处理程序根据机器的本地时间生成结果。它是时间的最简单概念。它既不需要提取时间戳,也不需要生成watermark。定义处理时间属性有三种方法:在DataStream转化时直接指定;在定义Table Schema时指定;在创建表的DDL中指定。

4、代码中更改时间类型

在Flink中默认情况下使用是Process Time时间概念,如果需要切换的话,可以使用以下代码进行切换:

val env=StreamExecutionEnvironment.getExecutionEnvironment//通过TimeCharacteristic指定事件处理env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)

关于大数据培训,Flink流处理时间概念解析,以上就为大家做了基本的介绍了。Flink当中的这几个时间概念,对于数据处理当中的执行流程理解,是很有好处的,入门阶段建议多理解深入。成都加米谷大数据,专业大数据培训机构,大数据开发,数据分析与挖掘,零基础班本月正在招生中,课程大纲及学习视频资料可联系客服获取!
热点排行
推荐文章
立即申请>>