flink学习之窗口处理函数

news2024/12/22 18:24:50

窗口处理函数

什么是窗口处理函数

Flink 本身提供了多层 API,DataStream API 只是中间的一环,在更底层,我们可以不定义任何具体的算子(比如 map(),filter(),或者 window()),而只是提炼出一个统一的“处理”(process)操作——它是所有转换算子的一个概括性的表达,可以自定义处理逻辑,所以这一层接口就被叫作“处理函数”(process function)。
在这里插入图片描述

如何使用窗口处理函数

进行窗口计算,我们可以直接调用现成的简单聚合方法(sum()/max()/min()),也可以通过调用 reduce()或 aggregate()来自定义一般的增量聚合函数(ReduceFunction/AggregateFucntion);
而对于更加复杂、需要窗口信息和额外状态的一些场景,我们还可以直接使用全窗口函数、把数据全部收集保存在窗口内,等到触发窗口计算时再统一处理。窗口处理函数就是一种典型的全窗口函数。
窗 口 处 理 函 数 ProcessWindowFunction 的 使 用 与 其 他 窗 口 函 数 类 似 , 也 是 基 于
WindowedStream 直接调用方法就可以,只不过这时调用的是 process()

stream.keyBy(_._1)
 .window( TumblingEventTimeWindows.of(Time.seconds(10)) )
 .process(new MyProcessWindowFunction)

rocessWindowFunction 是一个继承了 AbstractRichFunction 的抽象类,它有四个类型
参数:
IN:input,数据流中窗口任务的输入数据类型。
OUT:output,窗口任务进行计算之后的输出数据类型。
KEY:数据中键 key 的类型。
W:窗口的类型,是 Window 的子类型。一般情况下我们定义时间窗口,W 就是
TimeWindow。

因为全窗口函数不是逐个处理元素的,所以处理数据的方法在这里并不是 processElement(),
而是改成了 process()。方法包含四个参数。

  • key:窗口做统计计算基于的键,也就是之前 keyBy()用来分区的字段。
  • context:当前窗口进行计算的上下文,它的类型就是
  • ProcessWindowFunction 内部定 义的抽象类 Context。
  • elements:窗口收集到用来计算的所有数据,这是一个可迭代的集合类型。 out:用来发送数据输出计算结果的收集器,类型为Collector。

可以明显看出,这里的参数 elements 不再是一个输入数据,而是窗口中所有数据的集合。

ProcessWindowFunction 中除.process()方法外,并没有 onTimer()方法,而是多出了一个
clear()方法,这主要是方便我们进行窗口的清理工作。
至于另一种窗口处理函数 ProcessAllWinfdowFunction,它的用法非常类似。区别在于它基
于的是 AllWindowedStream,相当于对没有 keyBy()的数据流直接开窗并调用 process()方法:

stream.windowAll( TumblingEventTimeWindows.of(Time.seconds(10)) )
.process(new MyProcessAllWindowFunction)

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

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

相关文章

springboot集成COS对象存储

1.申请腾讯云存储桶 新建密钥(后面配置要用到) 2.编写工具类 此处使用工具类进行基本属性配置,也可选择在yml中配置 package com.sfy.util;import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; import com.qcloud.cos.a…

开源堡垒机JumpServer本地安装并配置公网访问地址

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpS…

计算机服务器中了mallox勒索病毒怎么办,mallox勒索病毒解密数据恢复

企业的计算机服务器存储着企业重要的信息数据,为企业的生产运营提供了极大便利,但网络安全威胁随着技术的不断发展也在不断增加,近期,云天数据恢复中心接到许多企业的求助,企业的计算机服务器中了mallox勒索病毒&#…

IDEA2023.2 将普通项目转Maven项目

1、选中一个普通工程: 2、快捷键:ctrlshift a,搜索:Add Framework Support… 3、勾选maven,点击ok。

谁适合选择虚拟化

情况 前些天,有人问弄虚拟化怎么样: 还有一个群里,讨论了这事: 也弄了很多年了,虽然不算深入,毕竟,也是拼尽了全力,毕竟差不多7年的时光已经投入进去了,回头时,感觉没留下什么,有些十年技术一场空的感觉,真是应了虚拟化这几个字。 现在就大体说说这事: 先看看当前…

网络通信(Socket/TCP/UDP)

一、Socket 1.概念: Socket(又叫套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接协议,客户端的IP地址,客户端的端口,服务器的IP地址,服务器的端口。 一个Socket是一对IP地址…

DP专题17 单词拆分

本题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目: 思路: 由题意,根据题目意思,给出字符串 S,以及一个字符串数组,问字符串数组中 是否可以任取字符…

java中stream流进行遍历

在源代码转向加工到目标代码时&#xff0c;可以使用加工流代码加工 三种方式&#xff1a; 1.使用stream流的of方法 Stream.of(arr); 2.使用数组的Arrays.stream Arrays.stream(arr); 3.集合类&#xff0c;继承了Collection的.stream List<Strin…

2.2.1.1-一个关于定投的故(姿)事(势)

跳转到根目录&#xff1a;知行合一&#xff1a;投资篇 已完成&#xff1a; 1、投资&技术   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas   1.2 金融数据处理   1.3 金融数据可视化 2、投资方法论   2.1.1 预期年化收益率   2.1.2 一个关于yaxb的…

工业相机+镜头选型及靶面、焦距计算等相关详解

工业相机镜头选型及靶面、焦距计算等相关详解 着重讲述相机的各个参数及使用意义总结相机镜头选型主要参数的推理计算 0. 工业相机相关概念简介 相机与镜头一览 工业相机与镜头实物图如下图所示&#xff1a; 常见的相机有两种供电方式&#xff1a;一种是电源线供电&#xff0…

码农维权——案例分析之违法解除劳动合同(二)

目录 一、背景 二、案例来源 三、被【非法】解除《劳动合同》后可以主张哪些诉求&#xff1f; 四、案例分析&#xff1a;违法解除劳动合同 A、公司的主张&#xff1a; B、公司的主要证据&#xff08;公司单方面提交的&#xff0c;法院不一定认可采纳&#xff09;&…

QT的绘图系统QPainterDevice与文件系统QIODevice

QT的绘图系统&#xff08;QPainterDevice&#xff09;与文件系统&#xff08;QIODevice&#xff09; 文章目录 1、Qt 的绘图系统1、QPainter的使用2、QPen(画笔&#xff09;及QBursh&#xff08;画刷&#xff09;3、手动更新窗口4、绘图设备1、四种绘图设备的 区别2、 QBitmap3…

革新区块链:代理合约与智能合约升级的未来

作者 张群&#xff08;赛联区块链教育首席讲师&#xff0c;工信部赛迪特聘资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09;关注张群&#xff0c;为您提供一站式区块链技术和方案咨询。 代理合约&#xff08;Prox…

使用Go语言编写HTTP代理服务器

在Go语言中&#xff0c;编写一个HTTP代理服务器相对简单且直观。代理服务器的主要职责是接收客户端的请求&#xff0c;然后将请求转发到目标服务器&#xff0c;再将目标服务器的响应返回给客户端。下面是一个简单的示例&#xff0c;展示如何使用Go语言编写一个基本的HTTP代理服…

地方债务余额数据,Shp、excel格式,2008-2020年,含公共财政收入、支出、负债率等多个字段

基本信息&#xff1a; 数据名称: 地方债务余额数据 数据格式: Shp、excel 数据时间: 2008-2020年 数据几何类型: 面 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1zfzqsl地方政府债-债券数量(只)2zfzqye地方政府…

美团收银餐饮版培训教程

硬件连接方式及介绍: 双屏收银机 收银一体机 双屏收银机连接图 收银一体机连接图 前台打印机 后厨打印机 标签打印机 前台打印机连接图 后厨打印机连接图 其它收银机配件 软件前期设置 1、机器联网 点开桌面的设置&#xff0c;点击更多&#xff0c;点击以太网&#xff0c;最上…

杭电网课笔记

技巧 1.判断得数为整数还是小数&#xff0c;可以%1&#xff0c;得数为0是整数 或者用instanceof Integer number 9; // 自动装箱 System.out.println(number instanceof Integer); // 输出&#xff1a;true 2.a * b 最大公约数 * 最小公倍数 LCM 最小公倍数 GCD 最大公…

聊聊Java虚拟机(一)—— 类加载子系统

1. 前言 ​ 虚拟机就是一款用来执行虚拟计算机指令的计算机软件。它相当于一台虚拟计算机。大体上&#xff0c;虚拟机分为系统虚拟机和程序虚拟机。系统虚拟机就相当于一台物理电脑&#xff0c;里面可以安装操作系统&#xff1b;程序虚拟机是为了执行单个计算机程序而设计出来…

FPGA之分布式RAM(2)

1) 128 X1 Single Port Distributed RAM 下图中可以看出来,通过2个LUT的组合使用可以串联实现更大深度的分布式RAM.下图中出现了F7BMUX的加入, F7BMUX可以用于LUT输出的选通. 原语调用&#xff1a; RAM128XIS#(INIT(128h00000000000000000000000000000000) // Initial conten…

动态规划——炮兵回城【集训笔记】

题目描述 游戏盘面是一个m行n列的方格矩阵&#xff0c;将每个方格用坐标表示&#xff0c;行坐标从下到上依次递增&#xff0c;列坐标从左至右依次递增&#xff0c;左下角方格的坐标为(1,1)&#xff0c;则右上角方格的坐标为(m,n)。 游戏结束盘上只剩下一枚炮兵没有回到城池中&a…