Flink实战(三)Flink的Time类型
【摘要】 3、Flink的Time类型对于流式数据处理,最大的特点是数据上具有时间的属性特征。Flink根据时间产生的位置不同,可以将时间区分为三种时间类型:==Event Time==(事件发生时间)事件产生的时间,它通常由事件中的时间戳描述==Ingestion time==(事件接入时间)事件进入Flink程序的时间==Processing Time==(事件处理时间)事件被处理时当前系统的时...
3、Flink的Time类型
-
对于流式数据处理,最大的特点是数据上具有时间的属性特征。
-
Flink根据时间产生的位置不同,可以将时间区分为三种时间类型:
-
==Event Time==(事件发生时间)
- 事件产生的时间,它通常由事件中的时间戳描述
-
==Ingestion time==(事件接入时间)
- 事件进入Flink程序的时间
-
==Processing Time==(事件处理时间)
- 事件被处理时当前系统的时间
-
-
Flink在流处理程序中支持不同的时间类型。
3.1 EventTime
- 1、事件生成时的时间,在进入Flink之前就已经存在,可以从event的字段中抽取
- 2、必须指定
watermarks
(水位线)的生成方式 - 3、优势:确定性,乱序、延时、或者数据重放等情况,都能给出正确的结果
- 4、弱点:处理无序事件时性能和延迟受到影响
3.2 IngestionTime
- 1、事件进入flink的时间,即在source里获取的当前系统的时间,后续操作统一使用该时间。
- 2、不需要指定watermarks的生成方式(自动生成)
- 3、弱点:不能处理无序事件和延迟数据
3.3 ProcessingTime
-
1、执行操作的机器的当前系统时间(每个算子都不一样)
-
2、不需要流和机器之间的协调
-
3、优势:最佳的性能和最低的延迟
-
4、弱点:不确定性 ,容易受到各种因素影响(event产生的速度、到达flink的速度、在算子之间传输速度等),压根就不管顺序和延迟
3.4 三种时间的综合比较
-
性能
- ProcessingTime > IngestionTime> EventTime
-
延迟
- ProcessingTime < IngestionTime< EventTime
-
确定性
- EventTime > IngestionTime> ProcessingTime
3.5、消息乱序问题
实时系统中,由于各种原因造成的延时,造成某些消息发到flink的时间延时于事件产生的时间。如果基于event time构建window,但是对于late element,我们又不能无限期的等下去,必须要有个机制来保证一个特定的时间后,必须触发window去进行计算了。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)