开发者社区> 问答> 正文

Flink中的watermark原理具体是什么啊?

Flink中的watermark原理具体是什么啊?

展开
收起
游客vwuxaq6iqaowc 2021-12-08 15:12:15 316 0
1 条回答
写回答
取消 提交回答
  • 实时系统中,由于各种原因造成的延时,造成某些消息发到lflink的时间延时于事件产生的时间。如果

    基于event time构建window,但是对于late element,我们又不能无限期的等下去,必须要有个机

    制来保证一个特定的时间后,必须触发window去进行计算了。这个特别的机制,就是watermark

    Watermarks(水位线)就是来处理这种问题的机制

    参考google的DataFlow,是event time处理进度的标志

    表示比watermark更早(更老)的事件都已经到达(没有比水位线更低的数据)

    基于watermark来进行窗口触发计算的判断

    只有基于EventTime的流处理程序需要指定Timestamp 和Watermarks的生成方式

    方式1:直接在source function中生成

    方式2: 通过AssigTimestampsAndWatermarks方法指定

    两种Watermark

    1. Periodic Watermarks

    基于Timer

    ExecutionConfig.setAutoWatermarkInterval(msec)(默认是200ms,设置watermarker"发送的周期)

    实现AssignerWithPeriodicWatermarks接口

    周期性调用getCurrentWatermark,如果获取的Watermark不等于null且比上一个最新的Watermark大

    就向下游发射

    1. Puncuated WaterMarks

    基于某些事件触发watermark的生成和发送(由用户代码实现,例如遇到特殊元素)

    实现AssignerWithPeriodicWatermarks 接口

    2021-12-08 15:12:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载