• Flink-时间语义和Watermark


      

     Event Time:事件创建的时间

    Ingestion Time:数据进入Flink的时间

    Processing Time:执行操作算子的本地系统时间,与机器相关

    Flink中默认的时间语义是Processing Time;

    如果使用EventTime语义,但是数据中不一定会有Event Time,如果没有可以使用Ingestion Time。

    如果使用EventTime,数据中也有相应的字段,那么flink知道具体是哪个字段表示timestamp吗?所以代码中需要指定。

    dataStream.assignTimestampsAndWatermarks();

    Flink的流式处理中,绝大部分的业务都会使用eventTime,一般只在eventTime无法使用时,才会被迫使用ProcessingTime或者IngestionTime。

    如果要使用EventTime,那么需要引入EventTime的时间属性,引入方式如下所示:

    val env = StreamExecutionEnvironment.getExecutionEnvironment
    // 从调用时刻开始给env创建的每一个stream追加时间特征
    env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)

    Watermark的概念和原理:

    乱序数据的影响

  • 相关阅读:
    LuoguP1126 机器人搬重物(BFS)
    POJ1950----DFS
    C
    B
    A
    C
    B
    A
    A
    B
  • 原文地址:https://www.cnblogs.com/Rabcheng/p/14165776.html
Copyright © 2020-2023  润新知