美文网首页
Flink-三个时间特性

Flink-三个时间特性

作者: 卡门001 | 来源:发表于2021-11-23 15:27 被阅读0次
    Flink三段论涉及的时间

    三个时间段

    • EventTime - 数据产生时间,嵌在event中可提取,后续统计分析的基准点。
      与运算过程长短无关,执行结果确定,可处理乱序、延迟等问题。
    • Windows Processing Time - 进入Flink运算的时间,与算子的执行时间有关系.
      性能好、延迟低,不确定性。
    • IngestionTime - Event/数据对接入到Flink的时间

    EventTime

    EventTime是事件发生的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink通过时间戳分配器访问事件时间戳。EventTime作为后续统计分析的基准点和作业执行的机器时间是没有关系的。

    执行结要确定,可处理乱序,延迟数据等问题。Flink的流式处理中,绝大部分的业务都会使用EventTime,一般只在EventTime无法使用时,才会被迫使用ProcessingTime或者IngestionTime。

    默认情况下,Flink框架中处理的时间语义为ProcessingTime,如果要使用EventTime,那么需要引入EventTime的时间属性。

    ProcessingTime

    ProcessingTime是指执行相应操作的机器的系统时间,ProcessingTime是Flink默认的时间概念,如需使用其他时间类型需要单独设置。性能好、延迟低,但在分布式系统中的不确定性无法对精度要求高的算子提供支持。

    IngestionTime

    IngestionTime是事件进入Flink的时间。在源算子处,每个记录将源的当前时间作为时间戳,并且基于时间的算子操作(如时间窗口)引用该时间戳。IngestionTime位于EventTime与ProcessingTime 之间。

    使用IngestionTime时,程序不须指定如何生成Watermarks,但程序无法处理任何无序事件或延迟数据。比ProcessingTime 稍贵一些,但更精确。

    总结

    我们在Flink初始化流式运行环境时,就会设置流处理时间特性。这个设置很重要,它决定了数据流的行为方式。(例如:是否需要给事件分配时间戳),以及窗口操作应该使用什么样的时间类型。

    相关文章

      网友评论

          本文标题:Flink-三个时间特性

          本文链接:https://www.haomeiwen.com/subject/elnhwltx.html