Flink Window 窗口【更新中】

Flink Window 窗口

在Flink流式计算中,最重要的转换就是窗口转换Window,在DataStream转换图中,可以发现处处都可以对DataStream进行窗口Window计算。
在这里插入图片描述窗口(window)就是从 Streaming 到 Batch 的一个桥梁。窗口将无界流(unbounded data stream)划分很多有界流(bounded stream),对无界流进行计算。

在这里插入图片描述
在实际业务需求中,往往说窗口,指的就是基于时间Time窗口,比如最近1分钟内数据,指的就是1分钟时间内产生的数据,放在窗口中

Flink Window 窗口的结构中,有两个必须的两个操作:

  • 第一、窗口分配器(Window Assigner):将数据流中的元素分配到对应的窗口。
  • 第二、窗口函数(Window Function):当满足窗口触发条件后,对窗口内的数据使用窗口处理函数(Window Function)进行处理,常用的有reduce、aggregate、process
  • 其他的triggerevictor则是窗口的触发和销毁过程中的附加选项,主要面向需要更多自定义的高级编程者,如果不设置则会使用默认的配置。
    在这里插入图片描述
  • 上图是窗口的生命周期示意图,假如设置的是一个10分钟的滚动窗口,第一个窗口的起始时间是0:00,结束时间是0:10,后面以此类推。
  • 当数据流中的元素流入后,窗口分配器会根据时间(Event Time或Processing Time)分配给相应的窗口。相应窗口满足了触发条件,比如已经到了窗口的结束时间,会触发相应的Window Function进行计算

在Flink计算引擎中,支持窗口类型有很多种,几乎所有Streaming流式计算引擎需要实现窗口都支持。

在这里插入图片描述

  • 1)、时间窗口TimeWindow

    • 按照时间间隔划分出窗口,并对窗口中数据进行计,如每xx分钟统计,最近xx分钟的数据
    • 划分为:**滚动(Tumbling)窗口和滑动(Sliding)**窗口
  • 2)、计数窗口CountWindow

    • 按照数据条目数进行设置窗口,比如每10条数据统计一次
    • 划分为:**滚动(Tumbling)窗口和滑动(Sliding)**窗口
    • [此种方式窗口计算,在实际项目中使用不多,但是有些特殊业务需要,需要使用此场景。]
      在这里插入图片描述
package com.lyj.sx.flink.day05;import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.datastream.AllWindowedStream;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.windowing.windows.GlobalWindow;public class CountWindowAllDemo {public static void main(String[] args) throws Exception {StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(new Configuration());DataStreamSource<String> source = env.socketTextStream("192.168.25.62", 8889);SingleOutputStreamOperator<Integer> map = source.map(Integer::parseInt);//不keyBy,直接划分窗口//窗口内的数据达到5条,就生成一个窗口,然后对窗口内的数据进行计算AllWindowedStream<Integer, GlobalWindow> win = map.countWindowAll(5);SingleOutputStreamOperator<Integer> sum = win.sum(0);sum.print();env.execute("pxj");}
}

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

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

相关文章

C#+GDAL影像处理笔记09:创建多边形、多部件图形、合并相邻的多边形

使用GDAL创建多边形、多部件要素、相邻面合并、以及shape文件创建的完整过程 1. 创建一个多边形 多边形必须闭合 // 创建第一个多边形几何对象Geometry polygon1 = new Geometry(wkbGeometryType.wkbPolygon);Geometry ring1 = new Geometry(wkbGeometryType.wkbLinearRing);…

银河麒麟如何部署QtMqtt(入门案例教程)

QtMqtt是一个基于Qt的MQTT客户端库,提供了使用MQTT协议与 MQTT broker 进行通信的功能。silver-linix是一个基于Linux的操作系统,用于嵌入式系统和物联网设备。下面将教您如何在silver-linix上部署QtMqtt。 1. 安装QtMqtt 1.1 安装QtMqtt依赖项 QtMqtt依赖于Qt和QtNetwork…

跨越空间的编码:在PyCharm中高效使用远程解释器

跨越空间的编码&#xff1a;在PyCharm中高效使用远程解释器 PyCharm的强大功能之一是支持远程解释器&#xff0c;这使得开发者能够在远程服务器或虚拟机上运行、调试代码&#xff0c;享受本地开发环境的便利。本文将详细介绍如何在PyCharm中配置和使用远程解释器&#xff0c;包…

系统架构师考点--软件工程(上)

大家好。今天我来总结一下软件工程的相关考点。这部分是考试的重点。在上午场客观题、下午场案例题以及下午场论文都有可能考到&#xff0c;在上午场客观题中大约占12-15分左右。 一、软件工程概述 软件开发生命周期 软件定义时期&#xff1a;包括可行性研究和详细需求分析过…

构建革新:在Gradle中打造自定义插件的终极指南

构建革新&#xff1a;在Gradle中打造自定义插件的终极指南 在构建自动化的征途上&#xff0c;Gradle以其灵活性和强大的扩展能力成为开发者的得力助手。自定义插件是Gradle生态中的一颗璀璨明珠&#xff0c;它允许开发者根据特定需求扩展Gradle的功能。本文将带你走进Gradle自…

uniapp打包成Android时,使用uni.chooseLocation在App端显示的地址列表是空白?一直转圈的解决办法

问题描述&#xff1a; uniapp打包后的测试版app在ios里可以显示高德地图的定位列表&#xff0c;但是安卓手机却不显示定位列表&#xff0c;一直在转圈圈&#xff0c;怎么回事&#xff1f;之前的功能在正式版都能用&#xff0c;真机运行也能用&#xff0c;为什么测试版的安卓手…

ADC性能规格--动态性能

所有真正的ADC都有额外的噪声源和失真过程&#xff0c;会降低性能。 动态性能规范报告了ADC动态行为中的这些缺陷&#xff0c;包括总谐波失真&#xff08;THD&#xff09;、信噪比加失真&#xff08;SND&#xff09;、信号噪声比&#xff08;SNR&#xff09;和无杂散动态范围&a…

【MySQL】7.MySQL 的内置函数

MySQL的内置函数 一.日期函数二.字符串函数三.数学函数四.其它函数 一.日期函数 函数名称说明current_date()当前日期current_time()当前时间current_timestamp当前时间戳(日期时间)date(datetime)截取 datetime 的日期部分date_add(date, interval d_value_type)给 date 添加…

Study--Oracle-07-ASM自动存储管理(二)

一、ASM安装准备条件 1、ASM支持存储类型 本地祼设备(本地的磁盘和分区) 网络附加存储(NAS) 存储区域网络(SAN) 2、ASM使用本地裸设备,要点: 已经被挂载到操作系统上或者已经做了分区 映射裸设备为文件名 设置正确的权限(针对grid用户和asmadmin组,权限为660) 二、OR…

ABAP面试题收集

面试阶段 第一阶段&#xff1a;自我介绍&#xff0c;简单介绍简况&#xff0c;尽量不要喋喋不休 第二阶段&#xff1a;根据简历问技术&#xff0c;不会的东西不要在简历上硬写 第三阶段&#xff1a;技术面 一般来说会有&#xff1a; 做过哪些增强&#xff08;隐式&#xff0c;出…

【CUDA】CUDA中缓存机制对计时的影响

笔者在阅读知乎上一个关于CUDA编程的专栏时&#xff0c;发现作者写的很多文章中都会附带计时的模块用于评估程序的运行效率&#xff0c;然而笔者发现&#xff0c;在运行这篇文章中的代码时时&#xff0c;得到的结果和作者的结果有较大差异&#xff0c;主要体现在&#xff1a;使…

React一基础

代码下载 React 概述 React 是一个用于构建用户界面的javaScript库&#xff0c;起源于facebook的内部项目&#xff0c;后续在13年开源了出来。 特点&#xff1a; 声明式——只需要描述UI看起来是什么样式&#xff0c;就跟写HTML一样&#xff0c;React负责渲染UI基于组件——…

Python - Word转TXT文本,或TXT文本转Word

Word文档&#xff08;.doc或.docx&#xff09;和纯文本文件&#xff08;.txt&#xff09;是两种常用的文件格式。Word文档通常用于复杂的文档处理和排版&#xff0c;而纯文本文件则用于存储和传输纯文本信息。了解如何在这两种格式之间进行转换能提高工作效率&#xff0c;并便于…

Pytorch使用Dataset加载数据

1、前言&#xff1a; 在阅读之前&#xff0c;需要配置好对应pytorch版本。 对于一般学习&#xff0c;使用cpu版本的即可。参考教程点我 导入pytorch包&#xff0c;使用如下命令即可。 import torch # 注意虽然叫pytorch&#xff0c;但是在引用时是引用torch2、神经网络获取…

【UE5.3】笔记11

一、变量的SET&&GET 1、创建变量保存数据&#xff0c;如下图&#xff0c;找到左侧我的蓝图下的变量&#xff0c;新增一个&#xff0c;并选择类型。使用的时候直接将变量拖到蓝图中&#xff0c;此时会显示两个选项一个是获取一个是设置。 选择获取就是个GET蓝图&#x…

2024文件加密软件有哪些丨超好用的文件加密软件排行榜

文件加密软件在现代数字生活中扮演着至关重要的角色&#xff0c;尤其是在保护个人隐私、商业机密和敏感数据方面。 加密软件可以防止未经授权的访问和数据泄露。即使设备丢失或被盗&#xff0c;加密后的文件也不会轻易被破解&#xff0c;从而保护了数据的安全。 对于企业而言…

Bootstrap 辅助类

Bootstrap 辅助类 Bootstrap 是一个流行的前端框架&#xff0c;它提供了一套丰富的辅助类&#xff0c;这些辅助类可以帮助开发者快速实现各种布局和样式效果。辅助类是 Bootstrap 中的一个重要组成部分&#xff0c;它们提供了一种简洁、直观的方式来控制元素的显示和隐藏、浮动…

鸿蒙next 数据缓存 你不知道的事情

《鸿蒙next ArkUI专栏》系列前言: 作者:徐庆 团队:坚果派 公众号:“大前端之旅” 润开鸿生态技术专家,华为HDE,CSDN博客专家,CSDN超级个体,CSDN特邀嘉宾,InfoQ签约作者,OpenHarmony布道师,电子发烧友专家博客,51CTO博客专家,擅长HarmonyOS/OpenHarmony应用开发、熟…

计算机网络之因特网

1.因特网简介 1.1因特网的提出 1957年&#xff0c;苏联发射了人类第一颗人造地球卫星"Sputnik"。作为响应&#xff0c;美国国防部(DoD)组建了高级研究计划局(ARPA)&#xff0c;开始将科学技术应用于军事领域 。 1961年7月&#xff0c;MIT的Leonard Kleinrock…

C#面:dot net core里面的路径是如何处理的?

路径处理是⽤来为进⼊的请求寻找处理函数的机制。所有的路径在函数运⾏开始时进⾏注册。 主要有两种路径处理⽅式&#xff0c; 常规路径处理和属性路径处理。常规路径处理就是⽤MapRoute的⽅式设定调⽤路径&#xff0c;属性路径处理是指在调⽤函数的上⽅设定⼀个路径属性。 在…