Flink实战(三)Flink的Time类型

举报
Maynor学长 发表于 2022/10/27 15:19:20 2022/10/27
【摘要】 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去进行计算了。

image-20221003180933975

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。