Flink的Watermark水位线详解

news2024/12/27 8:05:02

一、Flink的时间语义 

        Flink有如下三种时间语义: Flink的三种时间语义-CSDN博客

        在实际应用中,一般会采用事件时间语义。而正如前面所说的,事件时间语义需要等窗口的数据全部到齐了,才能进行窗口计算。那么,什么时候数据就都到齐了呢?这里我们引入水位线的概念。

二、为什么要引入水位线?不能用数据本身带有的时间戳来驱动吗?

        如果用数据本身所带有的时间戳来进行驱动,将会面临如下问题:

(1)如果面临聚合计算,数据本身所带有时间戳也会参与聚合,则聚合之后一批数据只会输出一个结果,那么下游的数据量就会变少,进而影响时间进度控制的精细程度。

(2)数据由上游节点发往下游节点时,往往一个数据只会发往下游的一个节点(除广播外),那么不同并行子任务之间的时钟推进程度就会产生差别,从而影响计算结果。

        综上所述,我们需要将将单独的时间信息以数据的形式广播到下游的每一个并行子任务上,并且这个时钟的传递不会因为窗口的聚合计算而受到影响。解决方法就是在数据流中加入一个时钟标记:水位线。

三、水位线概念

        水位线可以看作一条特殊的数据记录,它是插入到数据流中的一个数据标识,主要内容就是一个时间戳,用来指示当前流的事件时间。它插入流中的位置,应当是某个数据到来之后,这样就可以从这个数据中提取时间戳,作为当前水位线的时间戳了。如果下游出现了多个并行子任务,应当将水位线广播出去。

四、有序流中的水位线

        在理想情况下,数据按照生成的先后顺序依次进入数据流,在处理过程中也会保持原顺序不变。在这种情况下,从每个数据中提取的时间戳一定是单调不减的,在海量数据的情况下,可能有很多数据具有相同的时间戳,那么每个数据的到来都提取时间戳、生成水位线就做了大量的无用功,即使时间戳不同,连续数据的时间戳相隔也会非常之细微,往往对计算结果没什么影响。所以为了提高效率,一般会周期性(如每隔100ms,这里的间隔时间是系统时间)生成水位线。

五、乱序流中的水位线

        在分布式系统中,数据往往是乱序的,这种情况下由于存在迟到数据,可能出现水位线回退,因此在插入新的水位线时,要先判断一下时间戳是否比之前的大,否则不再生成新的水位线。此外,考虑到大量数据同时到来时的处理效率,也可以周期性生成水位线,只需要保存之前所有数据中最大的时间戳即可,在需要生成水位线时直接以最大时间戳作为新的水位线。最后,为了等待当前窗口的迟到数据,我们应该为水位线设置一个延迟时间,即把(最大时间戳-延迟时间)作为当前水位线。

六、水位线的特性总结

(1)水位线是插入到数据流中的一个标记,可以认为是一个特殊的数据

(2)水位线的主要内容是一个时间戳,用来表示当前事件时间的进展

(3)水位线是基于数据的时间戳生成的

(4)水位线的时间戳是单调递增的,以确保任务的事件时间时钟一直向前推进

(5)水位线可以通过设置延迟,来确保正确处理乱序数据

(6)一个水位线WaterMark(t),代表在当前流中事件时间已经来到了t,这表示t之前的数据都已经到齐了。

七、水位线的传递

        在重分区的传递模式下,下游子任务会收到多个上游子任务广播来的水位线,那么应该以哪个为准呢?回忆水位线的本质:当前时间之前的所有数据都已到齐!那么应当选取最小的水位线作为当前子任务的水位线。

八、水位线总结

(1) 水位线默认默认计算公式:水位线 = 观察到的最大时间戳-延迟时间-1ms

(2) 在数据流开始之前会插入一个负无穷大的水位线,在数据流结束时会插入一个正无穷大的水位线,保证所有的窗口闭合及所有的额定时器被触发。对于离线数据集,只需这两个水位线即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2266267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中伟视界:电话、短信怎么在矿山智能分析平台中的报警等级管理中分级通知到相关人员

在现代矿山安全管理中,通讯报警系统的有效性不可忽视,智慧矿山的融合通信与AI智能预警的联动,已经成为矿山智能化的一个发展方向。随着科技的发展,矿山智能分析平台越来越受到企业的青睐,通过对报警信息的分级管理&…

音视频入门知识(二)、图像篇

⭐二、图像篇 视频基本要素:宽、高、帧率、编码方式、码率、分辨率 ​ 其中码率的计算:码率(kbps)=文件大小(KB)*8/时间(秒),即码率和视频文件大小成正比 YUV和RGB可相互转换 ★YUV(原始数据&am…

论文研读:AnimateDiff—通过微调SD,用图片生成动画

1.概述 AnimateDiff 设计了3个模块来微调通用的文生图Stable Diffusion预训练模型, 以较低的消耗实现图片到动画生成。 论文名:AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning 三大模块: 视频域适应…

百度地图绘制行政区域及设置中心点

// 画行政区 const drwaDistrict (disList, clear true) > {clear && clearOverlays();if (!bMapGL.value) return;let bd new bMapGL.value.Boundary();disList.map((item) > {bd.get(item, function (rs1) {// rs1 是行政区对应的点集合 此处非每次必反信息…

jetson Orin nx + yolov8 TensorRT 加速量化 环境配置

参考【Jetson】Jetson Orin NX纯系统配置环境-CSDN博客 一 系统环境配置: 1.更换源: sudo vi /etc/apt/sources.list.d/nvidia-l4t-apt-source.list2.更新源: sudo apt upgradesudo apt updatesudo apt dist-upgrade sudo apt-get updat…

VirtualBox下ubuntu23.04使用主机串口以及使用 minicom 进行串口调试

VirtualBox下ubuntu23.04使用主机串口以及使用 minicom 进行串口调试 一、打开设备管理器看主机(Window系统)是否识别出串口,我这边显示的串行通信端口是COM3 二、打开VirtualBox,设置串口和USB设备 串口设置: 启用…

Python 自动化 打开网站 填表登陆 例子

图样 简价: 简要说明这个程序的功能: 1. **基本功能**: - 自动打开网站 - 自动填写登录信息(号、公司名称、密码) - 显示半透明状态窗口实时提示操作进度 2. **操作流程**: - 打开网站后自动…

本原多项式

将 G F ( p ) GF(p) GF(p)延伸为有 p m p^m pm个元素的域,称之为 G F ( p ) GF(p) GF(p)的扩域,表示为 G F ( p m ) GF(p^m) GF(pm). G F ( p ) GF(p) GF(p)是 G F ( p m ) GF(p^m) GF(pm)的子集。 G F ( p m ) GF(p^m) GF(pm)元素个数为 p m p^m pm。 …

【物联网技术与应用】实验15:电位器传感器实验

实验15 电位器传感器实验 【实验介绍】 电位器可以帮助控制Arduino板上的LED闪烁的时间间隔。 【实验组件】 ● Arduino Uno主板* 1 ● 电位器模块* 1 ● USB电缆*1 ● 面包板* 1 ● 9V方型电池* 1 ● 跳线若干 【实验原理】 模拟电位器是模拟电子元件,模…

能省一点是一点 - 享元模式(Flyweight Pattern)

享元模式(Flyweight Pattern) 享元模式(Flyweight Pattern)享元模式(Flyweight Pattern)概述享元模式包含的角色:享元模式应用场景 talk is cheap, show you my code总结 享元模式&a…

学习C++:变量

变量: 作用:给一段指定的内存空间起名,方便操作这段内容 (变量存在的意义:方便我们管理内存空间) 语法:数据类型 变量名 初始值; 实例:

蓝桥杯物联网开发板硬件组成

第一节 开发板简介 物联网设计与开发竞赛实训平台由蓝桥杯大赛技术支持单位北京四梯科技有限公司设计和生产,该产品可用于参加蓝桥杯物联网设计与开发赛道的竞赛实训或院校相关课程的 实践教学环节。 开发板基于STM32WLE5无线微控制器设计,芯片提供了25…

Day35汉明距离

两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y,计算并返回它们之间的汉明距离。 class Solution {public int hammingDistance(int x, int y) {int cnt 0;while (Math.max(x, y) ! 0) {if ((x & 1) ! (y &…

matplotlib pyton 如何画柱状图,利用kimi,直接把图拉倒上面,让他生成

要绘制类似于您提供的图像的柱状图,您可以使用Python中的Matplotlib库,这是一个非常流行的绘图库。以下是一个简单的示例代码,展示如何使用Matplotlib来创建一个类似的柱状图: python import matplotlib.pyplot as plt import nu…

计算机网络——期末复习(3)4-6章考试重点

第四章 根据IPv4第1个十进制数值判断,127以下为A类,128~191为B类,192~223为C类不能分配给主机或路由器接口的:A类网络号0和127,主机号全为0或全为1私有地址(Private IP Address)是指一类专门保…

【安全编码】Web平台如何设计防止重放攻击

我们先来做一道关于防重放的题,答案在文末 防止重放攻击最有效的方法是( )。 A.对用户密码进行加密存储使用 B.使用一次一密的加密方式 C.强制用户经常修改用户密码 D.强制用户设置复杂度高的密码 如果这道题目自己拿不准,或者…

【WebAR-图像跟踪】在Unity中基于Imagine WebAR实现AR图像识别

写在前面的话 感慨一下, WebXR的发展是真的快,20年的时候,大多都在用AR.js做WebAR。随着WebXR标准发展,现在诸如Threejs、AFrame、Unity等多个平台都支持里WebXR。 本文将介绍在Unity中使用 Image Tracker实现Web端的AR图像识别功…

HTML5实现好看的圣诞节网站源码

HTML5实现好看的圣诞节网站源码 前言一、设计来源1.1 主界面1.2 圣诞节由来界面1.3 圣诞活动界面1.4 圣诞活动门票界面1.5 团队介绍界面1.6 圣诞照片墙界面1.7 圣诞留言界面1.8 圣诞趣事界面1.9 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好…

go下载依赖提示连接失败

1、现象 Go下载模块提示连接失败 dial tcp 142.251.42.241:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.…

分布式事务入门 一

分布式事务入门 一 您好,我是今夜写代码,今天学习下分布式事务相关理论,以及常见的解决方案,为后续掌握Seata分布式事务框奠定基础。 为什么需要分布式事务? 分布式事务主要由于存储资源的分布性,通常涉及多个数据库。 分布式…