水位线(Watermark)

水位线(Watermark)本文详细解释了水位线在实时数据处理中的概念 区分了有序流和乱序流中水位线的生成方式 介绍了 Flink 中的 WatermarkStr 接口和内置生成器 以及如何在低延迟和结果正确性之间进行权衡

大家好,欢迎来到IT知识分享网。

水位线的定义


       事件时间进展的标记,被称作“水位线”(Watermark)
 具体实现上,水位线可以看作
一条特殊的数据记录,它是插入到数据流中的一个标记点,主要内容就是一个时间戳,用来
指示当前的事件时间。而它插入流中的位置,就应该是在某个数据到来之后;这样就可以从这个数据中提取
时间戳,作为当前水位线的时间戳了。
水位线是一种衡量Event Time进展的机制,用来处理实时数据中的乱序问题的,通常是水位线和窗口结合使用来实现
  • 1.1有序流中的水位线

    1).理想状态(数量小) :数据应该按照
生成的先后顺序流入中,
每条数据生产一个水位线
     2).如果当前
数据量非常大,同时涌进来的数据时间差会非常小(比如几毫秒),往往对处理计算也没有什么影响。所以为了提高效率,一般会
每隔一段时间生成一个水位线
  • 1.2乱序流中的水位线

                    
                    在分布式系统中,数据在节点间传输,会因为网络传输延迟的不确定性,导致顺序发生变化,这就是“
乱序数据
                        
                    乱序(数据小):
先判断一下时间戳是否比之前的大,否则就不再生成新的水位线(只有数据的时间戳比当前时钟大,才能推动时钟的前进,这是才插入水位线)。
                            
                
水位线(Watermark)
                    乱序(数据大):
保存之前所有数据中的最大时间戳(需要插入水位线时,就直接以它作为时间生成新的水位线)
                    
                    
水位线(Watermark)
                    乱序(迟到的数据):为了让窗口正确收集迟到的数据,等上一段时间比如:2秒  水位线代表了当前的时间时间时钟,
可以在数据的时间戳基础上加一些延迟来保证不丢数据(对于乱序流的正确处理非常重要)
                    

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/135358.html

(0)
上一篇 2025-07-05 15:00
下一篇 2025-07-05 15:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信