Flink WaterMark(水位线)分布式执行理解

背景

        WaterMark (水印) 本质上是一个时间戳。当Flink中的运算符接收到水印时,它明白(假设)它不会看到比该时间戳更早的消息。因此,在“EventTime”中,水印也可以被认为是一种告诉Flink它有多远的一种方式,WaterMark还可以用来实现时间延迟。

       本文主要涉及水印在单线程和分布式情况下的理解,基础知识和应用请看:Flink watermark 和 Flink编程框架

  

正文

       WaterMark相当于一个EndLine, 一旦WaterMark所携带的时间出现,就意味着windows_end_time时间和WaterMark时间相同的窗口开始计算执行了,WaterMark时间可以用现实时间,也可以用处理数据所携带的Event time,使用现实时间,在并行和多线程中需要注意的问题较少,因为都是以现实时间为标准,但是如果使用处理数据所携带的Event time作为WaterMark时间,需要注意两点:

          1.因为数据到达并不是循序的,注意保存一个当前最大时间戳作为WaterMark时间

          2. 并行同步问题

         以下内容将分为两部分,单线程版本和分布式多线程版本情况下,介绍WaterMark在系统中的使用和理解。

 

并行度为1的情况下 

         这里直接引用李麦迪博主的一篇文章

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值