Flink-水位线和时间语义

Flink中的时间含义

在这里插入图片描述
在实际应用中,事件时间语义会更为常见。一般情况下,业务日志数据中都会记录数据生成的时间戳(timestamp),它就可以作为事件时间的判断基础。
在Flink中,由于处理时间比较简单,早期版本默认的时间语义是处理时间;而考虑到事件时间在实际应用中更为广泛,从Flink1.12版本开始,Flink已经将事件时间作为默认的时间语义了。

事件时间和窗口

在这里插入图片描述

水位线的含义

在Flink中,用来衡量事件时间进展的标记,就被称作“水位线”(Watermark)。
具体实现上,水位线可以看作一条特殊的数据记录,它是插入到数据流中的一个标记点,主要内容就是一个时间戳,用来指示当前的事件时间。而它插入流中的位置,就应该是在某个数据到来之后;这样就可以从这个数据中提取时间戳,作为当前水位线的时间戳了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

水位线特性

在这里插入图片描述

窗口的理解

在Flink中我们很容易把窗口理解成为一个固定的框,当到达某个时间点时就停止收集数据开始计算并输出结果,这种理解时错误的,正解如下:
在这里插入图片描述

生成水位线的原则

完美的水位线是“绝对正确”的,也就是一个水位线一旦出现,就表示这个时间之前的数据已经全部到齐、之后再也不会出现了。不过如果要保证绝对正确,就必须等足够长的时间,这会带来更高的延迟。
如果我们希望处理得更快、实时性更强,那么可以将水位线延迟设得低一些。这种情况下,可能很多迟到数据会在水位线之后才到达,就会导致窗口遗漏数据,计算结果不准确。当然,如果我们对准确性完全不考虑、一味地追求处理速度,可以直接使用处理时间语义,这在理论上可以得到最低的延迟。
所以Flink中的水位线,其实是流处理中对低延迟和结果正确性的一个权衡机制,而且把控制的权力交给了程序员,我们可以在代码中定义水位线的生成策略。

水位线的传递

在这里插入图片描述
在流处理中,上游任务处理完水位线、时钟改变之后,要把当前的水位线再次发出,广播给所有的下游子任务。而当一个任务接收到多个上游并行任务传递来的水位线时,应该以最小的那个作为当前任务的事件时钟。
水位线在上下游任务之间的传递,非常巧妙地避免了分布式系统中没有统一时钟的问题,每个任务都以“处理完之前所有数据”为标准来确定自己的时钟。

迟到数据的处理

  • 迟到水印推进
    在水印产生时,设置一个乱序容忍度,推迟系统时间的推进,保证窗口计算被延迟执行,为乱序的数据争取更多的时间进入窗口。
WatermarkStrategy.forBoundedOutOfOrderness(Duration.ofSeconds(10));
  • 设置窗口延迟关闭
    Flink的窗口,也允许迟到数据。当触发了窗口计算后,会先计算当前的结果,但是此时并不会关闭窗口。
    以后每来一条迟到数据,就触发一次这条数据所在窗口计算(增量计算)。直到wartermark 超过了窗口结束时间+推迟时间,此时窗口会真正关闭。
.window(TumblingEventTimeWindows.of(Time.seconds(5)))
.allowedLateness(Time.seconds(3))
  • 使用侧流接收迟到的数据
.windowAll(TumblingEventTimeWindows.of(Time.seconds(5)))
.allowedLateness(Time.seconds(3))
.sideOutputLateData(lateWS)

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

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

相关文章

vue 浙里办前端改造,引入jquery脚本文件并使用

在 Vue.js 项目中引入外部 JavaScript 脚本文件可以通过以下几个步骤完成&#xff1a; 1. 在你的 Vue.js 项目中的 public/index.html 文件中&#xff0c;找到 <head> 标签&#xff0c;并在其中添加如下代码&#xff0c;引入 jQuery 脚本文件&#xff1a; <script s…

中文编程工具下载,编程工具构件之复选框构件

一、前言 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程 编程系统化教程链接https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&a…

GPM降水数据下载-Linux系统上使用wget

Linux 上如何下载GPM降水数据 图片来自&#xff1a;https://disc.gsfc.nasa.gov/datasets/GPM_3IMERGHHL_06/summary?keywordsGPM 这里以GPM30min降水数据为例&#xff0c; GPM下载链接 如果进不去&#xff0c;可能需要在这个网址上先注册个账户&#xff0c;这里不做介绍。 …

Redis 专栏、JVM 专栏、RocketMQ 专栏文章导读

深入理解 Redis 专栏文章 Redis深入理解-Socket连接建立流程以及文件事件处理机制 Redis深入理解-内核请求处理流程、数据传输协议 Redis深入理解-三次握手、槽位机制 Redis深入理解-主从架构下内核数据结构、主从同步以及主节点选举 基于社区电商的Redis缓存架构-缓存数据库双…

汽车租赁小程序源码租车小程序

汽车租赁小程序&#xff0c;多门店租车小程序&#xff0c;本套系统分为用户端&#xff0c;门店管理端&#xff0c;总管理后台三部分。门店可以加盟入驻平台。可以源码&#xff0c;也可以二次开发&#xff0c;也可以定制开发。php开发语言&#xff0c;前端是uniapp。用户端是小程…

持续集成交付CICD:Jenkins使用CD流水线下载Nexus制品

目录 一、实验 1.Jenkins使用CD流水线下载Nexus制品 一、实验 1.Jenkins使用CD流水线下载Nexus制品 &#xff08;1&#xff09;Jenkins新建CD流水线 &#xff08;2&#xff09;新建视图 &#xff08;3&#xff09;查看视图 &#xff08;4&#xff09;添加字符参数 &#xf…

列表优先于数组

在Java中&#xff0c;列表&#xff08;List&#xff09;通常优于数组&#xff0c;因为列表提供了更灵活的操作和动态调整大小的能力。下面是一个例子&#xff0c;展示了为什么在某些情况下使用列表比数组更好&#xff1a; import java.util.ArrayList; import java.util.List;…

Cmake找不到mysql.h和libmysqlclient.so

查看mysql.h和libmysqlclient.so的路径 eikeik-Virtual-Machine:~/桌面/dbpool/bin$ locate mysql.h /usr/include/mysql/mysql.h eikeik-Virtual-Machine:~/桌面/dbpool/bin$ locate libmysqlclient.so /usr/lib/x86_64-linux-gnu/libmysqlclient.so /usr/lib/x86_64-linux-g…

原码、补码的乘除法总结

CPU里的寄存器位数都是统一的 0、运算器的基本组成 包括如下几个寄存器&#xff1a; ACC&#xff1a;累加器&#xff0c;用于存放操作数&#xff0c;或运算结果MQ&#xff1a;乘商寄存器&#xff0c;在乘、除运算时&#xff0c;用于存放操作数或运算结果X&#xff1a;通用的…

业余无线电学习从入门到拿证(A证。12.23考试)(未完待续)

业余无线电从入门到拿A证一文通 欢迎提问&#xff0c;我会补充到文章中 如何学习 微信小程序&#xff1a;HAM模拟考试&#xff0c;业余无线电工具集app&#xff1a;智谱各地无线电协会网站&#xff0c;贴吧&#xff0c;搜索引擎&#xff08;不推荐&#xff0c;新手容易没有目…

盲盒小程序如何搭建?

随着移动互联网的发展&#xff0c;为了让消费者方便快捷地体验盲盒抽取乐趣&#xff0c;线上盲盒系统的开发成为了一个必要的过程。 今天本文将为大家介绍盲盒系统的搭建过程。 盲盒系统搭建过程 开发需求 在开发盲盒系统前&#xff0c;需要对盲盒市场深入分析&#xff0c;了…

分析项目需求后的ods层和dwd层建表和插入语句(全量脚本)

ods层 主要在ods干的事&#xff0c;就是根据需求将所需要的表的数据从mysql中导入到ods层中&#xff0c;所以需要在hive中建立ods层的表&#xff0c;并且在导入的时候需要根据需求过滤一下空数据&#xff0c;并在建表时加入一个dt字段记录导入的时间 ods层建表语句 1&#x…

1.1 Python的起源与发展

一、Python的起源 Python的起源可以追溯到1989年&#xff0c;当时荷兰计算机科学家Guido van Rossum在阿姆斯特丹的CWI&#xff08;荷兰计算机科学研究所&#xff09;工作。他曾参与开发过一门名为ABC的语言&#xff0c;然而这门语言并未能成为主流。因此&#xff0c;Guido va…

【Linux】面试常考可重入VS线程安全

1.重入与线程安全的概念 线程安全&#xff1a;多个线程并发同一段代码时&#xff0c;不会出现不同的结果。常见对全局变量或者静态变量进行操作&#xff0c;并且没有锁保护的情况下&#xff0c;会出现该问题。重入&#xff1a;同一个函数被不同的执行流调用&#xff0c;当前一…

【网络安全】HTTP Slowloris攻击原理解析

文章目录 Slowloris攻击的概念Slowloris攻击原理Slowloris攻击的步骤其他的DDoS攻击类型UDP FloodICMP (Ping) FloodSYN FloodPing of DeathNTP AmplificationHTTP FloodZero-day DDoS 攻击 推荐阅读 Slowloris攻击的概念 Slowloris是在2009年由著名Web安全专家RSnake提出的一…

Vue3项目中集成mars3D简单三部曲

Vue3项目中集成mars3D简单三部曲 这里是参考网址&#xff0c;大佬可以点击一件跳转 1.安装依赖 npm install vite-plugin-mars3d --save-dev2.修改 vite.config.ts 配置文件 import { defineConfig } from vite; import { mars3dPlugin } from vite-plugin-mars3d;export d…

禁毒知识竞赛流程和规则

禁毒知识竞赛是一项全国性竞赛活动。有着深化全国青少年毒品预防教育&#xff0c;巩固学校毒品预防教育成果的重要作用。本文介绍一场禁毒知识竞赛的完整流程和规则&#xff0c;供单位组织此类活动时参考。 1、赛制 第一轮10进6&#xff0c;第二轮6进4&#xff0c;4支队伍决出…

互联网大厂月薪分布:字节跳动超 5% 员工月薪高于 5 万

近期&#xff0c;某统计机构公开了国内互联网巨头的薪资分布情况。根据统计数据显示&#xff0c;贝壳、阿里、滴滴、拼多多、快手和腾讯等公司超过60%的员工&#xff0c;月薪集中在3-5万的区间。而拼多多和字节跳动更有超过5%的员工月薪超过5万。 华为&#xff0c;一个众所周知…

小程序接口OK,桌面调试接口不行

手机小程序OK,桌面版出现问题&#xff1b; 环境&#xff1a;iis反向url的tomcat服务&#xff0c;提供接口。 该接口post了一个很大的数组&#xff0c;处理时间比较久。 1&#xff09;桌面调试出现错误,提示 用apipost调用接口同样出错, 502 - Web 服务器在作为网关或代理服…

PostgreSql 序列

一、概述 在 PostgreSQL 中&#xff0c;序列用于生成唯一标识符&#xff0c;通常用于为表的主键列生成连续的唯一值。若目的仅是为表字段设置自增 id&#xff0c;可考虑序列类型来实现&#xff0c;可参考《PostgreSql 设置自增字段》 二、创建序列 2.1 语法 CREATE [ TEMPOR…