Flink的Watermark水位线详解

一、Flink的时间语义 

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

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

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

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

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

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

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

三、水位线概念

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

四、有序流中的水位线

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

五、乱序流中的水位线

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

六、水位线的特性总结

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

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

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

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

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

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

七、水位线的传递

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

八、水位线总结

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter下载安装配置教程(多版本)

目录 一、介绍 JMeter的主要特点: 使用场景: 二、下载 (一)下载最新版本 (二)下载历史版本 (三)配置环境变量 ​(四)查看版本 (五)启动方式 一、介绍 Apache JMeter 是一款开源的性能测试工具,主要用于对各种服务进行负载测试和性…

PTA数据结构编程题7-1最大子列和问题

我参考的B站up的思路 题目 题目链接 给定K个整数组成的序列{ N 1 ​ , N 2 ​ , …, N K ​ },“连续子列”被定义为{ N i ​ , N i1 ​ , …, N j ​ },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 1…

【路径规划】原理及实现

路径规划(Path Planning)是指在给定地图、起始点和目标点的情况下,确定应该采取的最佳路径。常见的路径规划算法包括A* 算法、Dijkstra 算法、RRT(Rapidly-exploring Random Tree)等。 目录 一.A* 1.算法原理 2.实…

在 Vue3 项目中实现计时器组件的使用(Vite+Vue3+Node+npm+Element-plus,附测试代码)

一、概述 记录时间 [2024-12-26] 本文讲述如何在 Vue3 项目中使用计时器组件。具体包括开发环境的配置,ViteVue 项目的创建,Element Plus 插件的使用,以及计时器组件的创建和使用。 想要直接实现计时器组件,查看文章的第四部分。…

简单园区网拓扑实验

1.实验拓扑 2.实验要求 1、按照图示的VLAN及IP地址需求,完成相关配置 2、要求SW1为VLAN 2/3的主根及主网关 SW2为vlan 20/30的主根及主网关 SW1和SW2互为备份 3、可以使用super vlan 4、上层通过静态路由协议完成数据通信过程 5、AR1为企业出口路由器 6、要求全网可…

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…

音视频入门基础:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现

音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…

MySQL45讲 第三十六讲 为什么临时表可以重名?——阅读总结

文章目录 MySQL45讲 第三十六讲 为什么临时表可以重名?——阅读总结一、引言二、临时表与内存表的区别(一)内存表(二)临时表 三、临时表的特性(一)可见性与生命周期(二)与…

MATLAB符号计算-符号表达式基础运算操作

1.1.2符号变量取值域的限定 默认复数域 【例1-1-2】解不等式 1.1.3创建符号表达式 对符号对象进行各种运算(算术运算、关系运算、逻辑运算),即可创建符号表达式。 1.算术运算与转置 【例1-1-3】 f5是f4的共轭转置 f6是f4的转置 2.关系…

深度学习-78-大模型量化之Quantization Aware Training量化感知训练QAT

文章目录 1 量化感知训练1.1 QAT的核心思想1.2 QAT的工作原理1.2.1 第一个维度1.2.2 第二个维度2 大模型的1-bits时代BitNet2.1 BitLinear层2.2 权重量化2.3 激活量化2.4 反量化3 大模型处于1.58Bits状态3.1 零值的作用3.2 量化3.3 效果4 参考附录1 量化感知训练 PTQ方法的一个…

(亲测)frp对外提供简单的文件访问服务-frp静态文件效果

话说有一天,希望将软件安装包放到网上,希望类似如下效果,正好在调试frp docker版,看到frp有个【对外提供简单的文件访问服务】功能,网上搜索也没相关效果图,所以顺手测试一下,截了几张图&#x…

基于YOLOV5+Flask安全帽RTSP视频流实时目标检测

1、背景 在现代工业和建筑行业中,安全始终是首要考虑的因素之一。特别是在施工现场,工人佩戴安全帽是确保人身安全的基本要求。然而,人工监督难免会有疏漏,尤其是在大型工地或复杂环境中,确保每个人都佩戴安全帽变得非…

LabVIEW数字式气压计自动检定系统

开发了一个基于LabVIEW开发的数字式气压计自动检定系统。在自动化检定PTB220和PTB210系列数字气压计,通过优化硬件组成和软件设计,实现高效率和高准确度的检定工作,有效降低人力成本并提升操作准确性。 项目背景 随着自动气象站的广泛部署&a…

FPGA的DMA应用——pcileech

硬件通过pcie总线,访存本机的内存,并进行修改,可以进行很多操作。 学习视频:乱讲DMA及TLP 1-pcileech项目简介和自定义模块介绍_哔哩哔哩_bilibili vivado2024.1的下载文章链接和地址:AMD-Xilinx Vivado™ 2024.1 现…

【漫话机器学习系列】022.微积分中的链式求导法则(chain rule of Calculus)

链式求导法则(Chain Rule of Calculus) 链式求导法则是微积分中的重要工具,用于处理复合函数的求导。它描述了如何计算一个函数的函数(复合函数)的导数。 1. 链式法则的定义 假设有一个复合函数 y f(g(x))&#xff…

TP5 动态渲染多个Layui表格并批量打印所有表格

记录: TP5 动态渲染多个Layui表格每个表格设置有2行表头,并且第一行表头在页面完成后动态渲染显示内容每个表格下面显示统计信息可点击字段排序一次打印页面上的所有表格打印页面上多个table时,让每个table单独一页 后端代码示例: /*** Nod…

开发微信小程序的过程与心得

起因 作为家长,我近期参与了学校的护学岗工作。在这个过程中,我发现需要使用水印相机来记录护学活动,但市面上大多数水印相机应用都要求开通会员才能使用完整功能。作为一名程序员,我决定利用自己的技术背景,开发一个…

新建一个springboot项目

注意版本注意版本注意版本!!! 参考: 我的IDEA 2022.2.3 是通过IDEA内嵌的功能来完成该项目的创建的。 一、创建 其实按截图走就够了,别弄的太麻烦了。 注意版本 注意,springboot的版本要是最新的&…

机器视觉检测相机基础知识 | 颜色 | 光源 | 镜头 | 分辨率 / 精度 / 公差

注:本文为 “keyence 视觉沙龙中机器视觉检测基础知识” 文章合辑。 机器视觉检测基础知识(一)颜色篇 视觉检测硬件构成的基本部分包括:处理器、相机、镜头、光源。 其中,和光源相关的最重要的两个参数就是光源颜色和…

7. petalinux 根文件系统配置(package group)

根文件系统配置(Petalinux package group) 当使能某个软件包组的时候,依赖的包也会相应被使能,解决依赖问题,在配置页面的help选项可以查看需要安装的包 每个软件包组的功能: packagegroup-petalinux-audio包含与音…