Flink之watermark(水印)讲解

article/2025/9/20 21:25:35

flink中watermark的详细介绍

使用前提:

处理数据开窗,处理数据的时间语义是事件时间,也就是每条数据产生的时间。

使用场景(解决问题):

处理乱序数据:flink中是实时处理数据,但是在处理数据的时候会出现因为网络传输的问题,所以数据先产生的反而到后面才到达,在被处理时候就会出现数据混乱,而且因为开窗,窗口关闭但是本窗口的数据来迟,导致数据丢失;

理想转态,数据按照顺序到达

理想状态

则对应窗口可以获得的数据就是
在这里插入图片描述
每一个窗口都可以得到对应的数据
但实际数据到来的顺序可能会出现乱序:
在这里插入图片描述

则没有watermark会每个窗口数据会出现的情况:

在这里插入图片描述

可以看到第一个来的4这个数据会导致[0,3)窗口关闭,而后来的数据1,2都无法在进入这个窗口中,也就导致了数据丢失,同样的道理6号数据,会导致[3,6)窗口关闭,3,5数据丢失

问题解决:

通过watermark来解决,简单来说就是延迟窗口关闭的时间,等一会迟到的数据,窗口关闭不在依据数据的时间,而是到达的watermark的时间。
看数据知道最大的乱序时间是4s(假设每个编号代表数据本省产生的时间),所以可以将窗口延迟等待的时间设置为4s;
在这里插入图片描述

watermark的生成就是每来一条数据生成一次,但是生成的计算公式是到最新到达的一条数据时间为止,数据最大的时间-4,当前已经到达的数据的最大时间,也就是说watermark的生成是只能不断变大,或者不变,而不可能减小的。(这里为方便没有再减一,实际代码运行时会在-1的) watermark= maxTimestamp - outOfOrdernessMillis -1

所以生成的watermark依次为:
在这里插入图片描述

这样就是4数据到来后,产生watermark为0,1数据到来后产生的watermark还是0,因为到1号数据为止最大的时间是4,依次类推就如上图。
因为现在窗口关闭是依据watermark的时间,而不是数据本身时间了,所以4号数据到达[3,6)窗口时,产生的watermark为0不会导致[0,3)窗口关闭,只有等到watermark为3才会关闭,也就是等到7号数据到达产生3的watermark的时候,所以每个窗口的数据就为:
在这里插入图片描述

所有的数据都可以到原本的窗口。

多平行度下的watermark

一个子任务中watermark会发往所有下一算子中的子任务,也就是一发多,
同样一个子任务会接收上一个算子中所有子任务的watermark,这时起作用的就是最小的哪一个watermark。
watermark可以理解为一个特殊的数据,这个数据不参与计算,仅仅是对窗口的触发关闭起作用;

总结:

1)衡量事件时间的进展
2) 单调不减的(保持不变,或 增加)
3) 是一个特殊时间戳,生成之后插入到流里,随着流的流动传递
4)解决 乱序 的问题
5)认为,在它之前的数据都处理过了(如果还有,说明该数据迟到了)
6)触发 窗口等 的 计算、关闭1


http://chatgpt.dhexx.cn/article/1Zie0gvM.shtml

相关文章

WaterMark使用和详解

上篇:基于flink的会话窗口的api实现 WaterMark翻译为水位线,什么时候用到水位线呢? 比如说水控在顺水的时候达到紧梯就会触发,若不放水就可以发现危险的现状 在spark程序划分成窗口的时候,主要是衡量什么时候触发&am…

【大数据】带你理解并使用flink中的WaterMark机制

文章目录 一、引导二、WaterMark1、Watermark的原理2、Watermark 的使用2.1、顺序数据流中的watermark示例 2.2、乱序数据流中的WaterMark2.2.1、With Periodic(周期性的) Watermark示例一:使用周期性的WaterMark2.2.2、With Punctuated&…

JavaEE是什么?JavaSE又是什么?两者的区别有哪些?

Java作为最流行的编程语言受到了许多人的喜爱,其在编程中的地位自不必多说。对于许多才刚刚入门Java的朋友来讲,常常会产生这样的困惑,JavaEE是什么?JavaSE又是什么?两者的区别有哪些?学哪个比较好&#xf…

php mysql Javaee_javaee与php的区别是什么

javaee与php的区别:1、JavaEE是门面向对象的程序设计语言,而PHP是解释执行的服务器脚本语言;2、用JavaEE开发的Web应用从MySQL数据库转到Oracle数据库只需要做很少的修改,而PHP则需要做大量的修改工作。 javaee与php的区别&#x…

解读JAVAEE是什么样的Java

javaEE是指java enterprise edition,java企业版,多用于企业级开发,包括web开发等等很多组建。javaEE开发会设计java的高级特性以及一些spring等架构,需要掌握的内容相对多。 JAVA,所有的Java平台都由一个JVM和一组应用…

java ee 下载什么意思_JavaEE到底是什么?

慕运维8079593 JavaEE只是一个规范吗?我的意思是:EJBJavaEE是吗?JavaEE确实是一个摘要规格说明。任何人都愿意开发和提供规范的工作实现。这个混凝土实现是所谓的应用服务器,如野弗利, 托梅, 玻璃鱼, 自由, WebLogic,等…

java ee api是什么意思_JavaEE的整体概述

标签: JavaEE整体概述 知识点: 1、整体概述JavaEE的知识体系 2、JavaEE是什么? 能干什么? 为什么需要JavaEE? 3、JavaEE有什么? JavaEE的技术体系? JavaEE的本质是什么? 4、JavaEE的零散基础知识 5、JavaEE的组件体系结构 -----------------------…

矩阵求逆方法

1.待定系数法 矩阵A 1, 2 -1,-3 假设所求的逆矩阵为 a,b c,d 则 从而可以得出方程组 a 2c 1 b 2d 0 -a - 3c 0 -b - 3d 1 解得 a3; b2; c -1; d -1 2.伴随矩阵求逆矩阵 伴随矩阵是矩阵元素所对应的代数余子式,所构成的矩阵,转置后得到的新矩阵…

复数矩阵求逆的 C 语言程序

关于复数矩阵求逆,如果使用 MATLAB,就非常简单。我们先用一个 MATLAB 的例子来说明,等会要将 C 语言的程序和 MATLAB 的程序进行对比。 close all; clear all; clc;%定义矩阵a为复数矩阵 a [[42*i,31*i,43*i,55*i];[17*i,82*i,22*i,93*i];[…

科学计算器如何求矩阵的逆

大学本科买了四年的计算器不会求逆,到了研究生了好好研究下这个功能,终于终于会用了,以往 对着那个矩阵功能都发懵😂,记录一下这个史诗无敌隐藏功能 1、进入菜单,点击4进入矩阵菜单 2、这里选择1定义矩阵A…

matlab求一个矩阵的逆矩阵的命令,如何用MATLAB求逆矩阵

如何用MATLAB求逆矩阵以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如何用MATLAB求逆矩阵 如果英文好呢,自己看目录 不好还是先看中文的教材,对matlab的框架和功能有了一定的了解后,自己也就看的懂帮助里面…

matlab矩阵求逆的模块,matlab矩阵求逆矩阵

matlab矩阵求逆矩阵 因为 所以该矩阵可逆,根据 ,其中 得到 计算矩阵A每个元素的代数余子式: 所以 可得: matlab计算如下: >> A1[1 2 2;2 1 -2;2 -2 1] A1 1 2 2 2 1 -2 2 -2 1 >> >> >> A2in…

求矩阵的逆的三种方法

我们知道求矩阵的逆具有非常重要的意义,本文分享给大家如何针对3阶以内的方阵,求出逆矩阵的3种手算方法:待定系数法、伴随矩阵法、初等变换法(只介绍初等行变换) 待定系数法求逆矩阵 1 首先,我们来看如何使…

千万不能错过的Android NDK下载安装及配置

Java 语言是一个跨平台的语言,有着“Write Once,Run Anywhere”的美誉。但是却导致了它和本地交互的能力不够强,无法完成一些和操作系统相关的特性。 而 JNI 就是 Java Native Interface(Java 本地接口),用…

NDK在Linux下载配置以及C、C++编译配置(交叉编译)

NDK在Linux下载配置以及C、C编译配置(交叉编译) 前言: 我们搭建好Ubutu虚拟机之后,通过xShell远程登录Ubutu上SSH服务器,在xShell上可以进行相关的编译操作了。但是我们在xShell上gcc、g编译的可执行文件只能在Linux…

Android——NDK下载提示缺少toolchains问题解决

更新下载了最新的NDK,发现Android SDK报错。 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android。 解决办法: 1.找到并进入下载安装的ndk目录 lydeMacBook-Pro:~ imac$ cd /Users/ly/Library/Android/sd…

android ndk 下载安装(ubuntu)

1. 下载并解压安装包 官网下载:https://developer.android.com/studio ndk各个版本下载地址:https://blog.csdn.net/u011077027/article/details/102706283 官网下载需要梯子,百度云盘下载:链接: https://pan.baidu.com/s/1Ge8fQu…

Window NDK下载以及环境变量配置

作者介绍:铸梦xy。IT公司技术合伙人,IT高级讲师,资深Unity架构师,铸梦之路系列课程创始人。 第一种 NDK下载安装步骤一 NDK环境变量配置步骤一 测试NDK配置 第二种 支持编译c ninja 前言 NDK是开发者必不可少的一部分&#xff0c…

3、NDK下载、安装

文章目录 一、下载NDK二、配置环境变量三、测试 一、下载NDK 官网下载地址:https://developer.android.google.cn/ndk/downloads/,选择自己相应的版本,下载解压。(我安装在D:\utils\android-ndk-r21d) 特别注意:安装路径不要有中文和空格 二、配置环境…

【Android NDK 开发】Android NDK 下载 ( 下载指定历史版本 NDK | Android NDK r10e - 2015 年 5 月 )

文章目录 一、下载指定历史版本 NDK 一、下载指定历史版本 NDK 进入到 ndk 下载的 " 修订历史记录 " 页面 https://developer.android.google.cn/ndk/downloads/revision_history ; 在该页面中 , 有 Android NDK r1(2009 年 6 月)~ Android N…