zoukankan      html  css  js  c++  java
  • 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的概念和原理:

    乱序数据的影响

  • 相关阅读:
    LOJ10092半连通子图
    LOJ104 普通平衡树
    LOJ10145郁闷的出纳员
    LOJ10144宠物收养所
    LOJ10043
    洛谷P3850 书架
    codevs 1814 最长链
    洛谷 P2022 有趣的数
    codevs 1312 连续自然数和
    noip 2010 引水入城
  • 原文地址:https://www.cnblogs.com/Rabcheng/p/14165776.html
Copyright © 2011-2022 走看看