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的概念和原理:

    乱序数据的影响

  • 相关阅读:
    CF732 F Tourist Reform——边双连通分量
    CF36 E Two Paths——欧拉(回)路
    最小生成树()
    Bellman-Ford算法
    SPFA算法
    归并排序(Merge_Sort)
    并查集
    int(3)与int(11)的区别
    mysql应该看的blog
    mysql建立索引
  • 原文地址:https://www.cnblogs.com/Rabcheng/p/14165776.html
Copyright © 2011-2022 走看看