Flink Watermarks原理

Flink Watermark的原理

Watermark是什么?Watermark就是一个时间戳,它先从输入文件中抽取到EventTime,如果不设最大延迟时间,那么这个时间就是Watermark,你也可以设置一个最大延迟时间,减去这个最大延迟时间就可以得到watermark。
Watermark的是为了处理乱序到达而设立的。什么意思?事件发生是有先后顺序的,但是当他们到达flink的时间可能和这个顺序不一样,这就叫乱序。如果不是流式文件,我们可以怎么处理?我们可以分配一块缓存,等待所有事件到达后,再根据它们的时间戳排个序,这样乱序的问题就解决了。
Watermark也是这个原理,它是结合时间窗口来使用的。时间窗口是一个个有边界的时间段,根据watermark的值把事件放到对应的窗口中,然后各个窗口里按顺序执行就行了。
这就是watermark的原理,但是这些和水位线的概念也没什么关系。水位线的作用,是决定什么时候处理窗口。比如说一个窗口的时间是[10,15),这个时候来了一个16的watermark,watermark是考虑了最大延迟时间的,也就意味着,不会有watermark小于16的事件到了,当然也不会有事件落到[10,15)之间了,这个时候就可以处理[10,15]这个窗口了。
当然,最大延迟时间是我们人为设定的,实际情况下可能还是有事件迟到,迟到事件如何处理,那就是另一个问题了,和watermark没有关系了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值