Flink-时间流与水印

news2025/1/25 9:11:16

时间流与水印

  • 一、背景
  • 二、时间语义
    • 1.事件时间(event time)
    • 2.读取时间(ingestion time)
    • 3.处理时间(processing time)
  • 三、水印-Watermarks
    • 1.延迟和正确性
    • 2.延迟事件
    • 3.顺序流
    • 4.无序流
    • 5.并行流
  • 四、Windows
    • 1.窗口维度分类
      • 1.1 时间窗口
      • 1.2 数量窗口
    • 2.窗口规则分类
      • 2.1 滚动窗口
      • 2.2 滑动窗口
      • 2.3 会话窗口
      • 2.4 全局窗口
    • 3.内置窗口
    • 4.窗口函数
      • 4.1 增量计算
      • 4.2 全量计算
  • 总结
    • 参考链接


一、背景

Flink需要支持流重放并且还要不影响结果,因此不能仅仅支持计算时间还要支持事件时间。事件流在传输和处理过程耗时不同,导致下游节点接受到的数据流可能是乱序的。由于程序不能无限制等待所有事件到达之后再处理,因此需要决定何时停止等待前序事件,这就是Watermarks的作用。
Flink中流入的数据分为三种类型:事件流、watermark和checkpoint barriers。其中watermark和checkpoint barriers都是flink根据一些策略生产的。
在这里插入图片描述

二、时间语义

Flink支持三种时间语义:

1.事件时间(event time)

事件产生的时间,记录的是设备生产或者存储事件的时间。

2.读取时间(ingestion time)

Flink读取事件时记录的时间

3.处理时间(processing time)

Flink 具体算子处理事件的时间

三、水印-Watermarks

Watermarks主要是定义何时停止等待较早事件。在Flink中采用的是固定延迟策略,也就是假定所有的事件都是有一个最大延迟。

1.延迟和正确性

开发人员需要在延迟和结果正确性作出权衡。如果Watermarks的边界时间设置的相对较短,那么会快速产生一个可能不太准确的结果。如果Watermarks的边界时间设置的小队较长,那么会延迟很久的情况下产生一个相对比较准确的结果。

2.延迟事件

如果算子接受到了Watermark(t) ,则表示事件流的时间已经到达了 t; watermark 之后的时间戳 ≤ t 的任何事件都被称之为延迟事件。

3.顺序流

在顺序流中,watermark也是顺序的分布在整个事件流中,并且是周期性出现的。
在这里插入图片描述

4.无序流

针对无序流由于事件不是按照时间戳顺序出现,所以watermark非常重要。watermark到达算子就表明这个时间戳之前的所有事件都已经到达了此算子,此算子就可以进行相应计算。并且在操作完成后会生成一个新的watermark以供下游算子参考。
在这里插入图片描述

5.并行流

watermark是在数据源输入时产生的,各个分区输入是互相独立的。当watermark到达某个算子时,算子会产生一个新的watermark。如果算子有多个输入流,算子会输出输入流中事件时间的最小值。
在这里插入图片描述

四、Windows

Flink在窗口的场景上处理有非常丰富的api,应用过程中经常遇到分析一个时间段内的浏览量、最高量、平均值等场景。

1.窗口维度分类

对于无界数据流进行一些数据统计不现实,所以需要在一定的窗口内对数据进行统计和分析。按照划分维度可以分为时间窗口和数量窗口。
在这里插入图片描述

1.1 时间窗口

时间窗口就是以时间点来定义窗口的开始和结束,在窗口开放期间符合条件的事件会进入窗口,在窗口结束前会对窗口内的事件进行计算和处理。

1.2 数量窗口

数量窗口就是以事件个数来定义窗口的开始和结束,在窗口开放期间事件会进入窗口,在窗口结束前会对窗口内的事件进行计算和处理。

2.窗口规则分类

除了维度窗口外,每个窗口的划分还有更细致的划分:滚动窗口( Tumbling Window )、滑动窗口( Sliding Window )、会话窗口( Session Window ),以及全局窗口( Global Window )。

2.1 滚动窗口

滚动窗口是指固定大小的窗口,对数据流按时间或者事件个数进行均匀的划分。窗口之间是首尾想接的没有重叠。比如计算每分钟页面浏览量。

2.2 滑动窗口

滑动窗口大小也是固定的,但是滑动窗口首尾不是相接的有一定重叠。比如计算每10秒计算前一分钟的页面浏览量。

2.3 会话窗口

会话窗口就是基于会话来对数据进行分组。

2.4 全局窗口

全局窗口会把相同key的所有数据放到同一个窗口中。

3.内置窗口

Flink计算窗口主要有两个抽象概念:窗口分配器和窗口函数,窗口分配器主要是指如果将事件分配到窗口,窗口函数是指如何对窗口内的事件进行处理。

Flink内置窗口分配器如下:
在这里插入图片描述
基于时间的窗口即可以根据事件时间也可以根据处理时间来划分窗口,基于计算的窗口只有在事件数量达到要求才会触发计算。

4.窗口函数

窗口函数可以进行增量计算和全量计算。

4.1 增量计算

开发者需要继承ReduceFunction或AggregateFunction。当每个事件被加到窗口时,都会调用 ReduceFunction 或者 AggregateFunction 来增量计算。

4.2 全量计算

开发者需要继承ProcessWindowFunction。当触发窗口时,会调用ProcessWindowFunction做全量计算。

总结

主要是对时间流和水印产生背景和作用进行了介绍,对窗口分类和窗口函数进行初步了解。


参考链接

1.Flink实时流
2.Flink流式分析

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

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

相关文章

【Openstack Train安装】八、placement安装

Placement 肩负着这样的历史使命,最早在 Newton 版本被引入到 openstack/nova repo,以 API 的形式进行孵化,所以也经常被称呼为 Placement API。它参与到 nova-scheduler 选择目标主机的调度流程中,负责跟踪记录 Resource Provide…

Windows下命令行启动与关闭WebLogic的相关服务

WebLogic 的服务器类型 WebLogic提供了三种类型的服务器: 管理服务器节点服务器托管服务器 示例和关系如下图: 对应三类服务器, 就有三种启动和关闭的方式。本篇介绍使用命令行脚本的方式启动和关闭这三种类型的服务器。 关于WebLogic 的…

洗地机哪个牌子好用?希亦、添可、石头洗地机品牌实测推荐!

现代家居生活中,普通的扫把拖把已经快要脱离了普通百姓家,人们纷纷使用智能扫地机洗地机等。 但是现在市场上洗地机的品牌参差不齐,很多不懂行的人不知道该选什么,那么什么洗地机的品牌质量好且耐用呢?下面笔者为大家…

Azure Machine Learning - 创建Azure AI搜索索引

目录 一、先决条件检查空间 二、创建和加载索引启动向导连接到 数据源跳过认知技能配置配置索引配置索引器 三、监视索引器进度四、检查搜索索引结果五、添加或更改字段六、使用搜索浏览器查询七、运行更多示例查询八、清理资源 在本文中,你将使用导入数据向导和由虚…

解决msvcr71.dll丢失5个方法,修复程序运行缺失dll问题

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcr71.dll丢失”。这个错误提示通常出现在运行某些程序或游戏时,给使用者带来了很大的困扰。那么,究竟是什么原因导致了msvcr71.dll文件的丢失呢?本文…

T-Rex:检测一切 | 基于视觉提示的开集检测器,检测并计数

图1. 我们引入了一个交互式对象计数模型T-Rex。给定参考图像上指定的框或点,T-Rex 可以检测目标图像上的所有与指定对象表现出相似模式的实例,然后将其相加得到计数结果。我们先通过T-Rex生成检测到框提示,再使用SAM得到mask,以获…

Android端极致画质体验之HDR播放

高动态范围HDR视频通过扩大亮度分量的动态范围(从100cd/m2到1000cd/m2),以及采用更宽的色彩空间BT2020,提供极致画质体验。从Android10开始,支持HDR视频播放。 一、HDR技术 HDR技术标准包括:Dolby-Vision、HDR10、HLG、PQ。支持…

set与map

set与map 一、序列式容器与关联式容器二、pair1、键值对2、作用3、构造函数4、make_pair(1)构造函数(2)作用 5、代码6、运行结果 三、set1、概念2、代码3、运行结果4、说明 四、multiset1、与set的关系2、代码3、运行结果 五、map…

鸿蒙系统扫盲(三):鸿蒙开发用什么语言?

1.两种开发方向 我们常说鸿蒙开发,但是其实鸿蒙开发分为两个方向: 一个是系统级别的开发,比如驱动,内核和框架层的开发,这种开发以C/C为主 还有一个是应用级别的开发,在API7以及以下,还是支持…

linux socket套接字

文章目录 socket流socket(TCP)数据报socket(UDP) 讨论 socket 所谓套接字,就是对网络中不同主机上的应用程序之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,套接字提供了应用层进程利…

WS2812灯条基于WLED开源项目无门槛使用简介

WS2812灯条基于WLED开源项目无门槛使用简介 📌项目github地址:https://github.com/Aircoookie/WLED📍WLED详情地址:https://kno.wled.ge/🎈网页在线烧录固件地址:https://install.wled.me/ ✨ 仅作为使用的…

【同一局域网下】访问其他电脑的虚拟机

一、在被连接的电脑上对VMware进行设置 编辑 --> 虚拟网络编辑器 按顺序点击 如果22端口已被占用,可以自行定义 (端口号越大,被占用的可能性越小) 二、在被连接的电脑上对防火墙进行设置(这里以win11为例&#xff…

【Qt之QSqlRelationalDelegate】描述及使用

描述 QSqlRelationalDelegate类提供了一个委托,用于显示和编辑来自QSqlRelationalTableModel的数据。 与默认委托不同,QSqlRelationalDelegate为作为其他表的外键的字段提供了一个组合框。 要使用该类,只需在带有QSqlRelationalDelegate实例…

考虑极端天气线路脆弱性的配电网分布式电源配置优化模型_IEEE33节点(附带Matlab代码)

随着新能源技术及智能电网的发展,越来越多的分布式电源加入配电网中,不仅改变了配电网结构及供电方式,而且提升了配电网的供电质量。但是在全球气候变暖的背景下,极端天气发生的频率也越来越高,一旦发生必将对配电网系…

竞赛选题 题目:基于深度学习的中文汉字识别 - 深度学习 卷积神经网络 机器视觉 OCR

文章目录 0 简介1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 简介 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的中文汉字识别 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! &a…

python接口自动化测试之requests库的基础使用

简单介绍 requests库简单易用的HTTP库 Get请求 格式: requests.get(url) 注意:若需要传请求参数,可直接在 url 最后的 ? 后面,也可以调用 get() 时多加一个参数 params ,传入请求参数,注意需要是 dict…

如何利用轮廓系数(Silhouette Coefficient)来判断模糊c均值聚类FCM的聚类簇数量

文章目录 前言一、轮廓系数的计算方法二、具体流程 前言 轮廓系数(Silhouette Coefficient)是一种评价聚类效果的指标,它可以用于判断模糊C均值聚类的聚类簇数量。 一、轮廓系数的计算方法 对于每个数据点i,计算它属于每个聚类…

【GraphQL】什么是Prisma?

本页提供了Prisma及其工作原理的高级概述。 什么是Prisma? Prisma是一个开源的下一代ORM。它由以下部分组成: Prisma客户端:Node.js和TypeScript的自动生成和类型安全查询生成器Prisma迁移:迁移系统Prisma Studio:GUI&#xff0…

算法基础之字符串哈希

字符串哈希 核心思想&#xff1a;用p(131或者13331)进制数储存字符串每一位数的hash值 L—R的哈希值 h[R]-h[L-1]*PR-L1 哈希值很大—>modQ(264)变小 用unsigned long long 存 (出界) #include<iostream>using namespace std;typedef unsigned long long ULL;co…

Jenkins+Git+Appium 持续集成策略

持续集成 &#xff08;Continuous integration&#xff0c;简称 CI&#xff09; 持续集成是一种开发实践&#xff0c;它倡导团队成员需要频繁的集成他们的工作&#xff0c;每次集成都通过自动化构建&#xff08;包括编译、构建、自动化测试&#xff09;来验证&#xff0c;从而尽…