bat窗口大小设置_8-Flink中的窗口

戳原文:

1-Flink入门

2-本地环境搭建&构建第一个Flink应用

3-DataSet API 4-DataSteam API

5-集群部署

6-分布式缓存

7-重启策略

8-Flink中的窗口

9-Flink中的Time

窗口

窗口类型

  1. flink支持两种划分窗口的方式(time和count) 如果根据时间划分窗口,那么它就是一个time-window 如果根据数据划分窗口,那么它就是一个count-window
  2. flink支持窗口的两个重要属性(size和interval)
  • 如果size=interval,那么就会形成tumbling-window(无重叠数据)
  • 如果size>interval,那么就会形成sliding-window(有重叠数据)
  • 如果size<interval,那么这种窗口将会丢失数据。比如每5秒钟,统计过去3秒的通过路口汽车的数据,将会漏掉2秒钟的数据。
  1. 通过组合可以得出四种基本窗口:
  • time-tumbling-window 无重叠数据的时间窗口,设置方式举例:timeWindow(Time.seconds(5))
  • time-sliding-window 有重叠数据的时间窗口,设置方式举例:timeWindow(Time.seconds(5), Time.seconds(3))
  • count-tumbling-window无重叠数据的数量窗口,设置方式举例:countWindow(5)
  • count-sliding-window 有重叠数据的数量窗口,设置方式举例:countWindow(5,3)
  1. flink支持在stream上的通过key去区分多个窗口

窗口的实现方式
上一张经典图:

61909d76032bba52cca3b7cce5173a1a.png
  • Tumbling Time Window
 假如我们需要统计每一分钟中用户购买的商品的总数,需要将用户的行为事件按每一分钟进行切分,这种切分被成为翻滚时间窗口(Tumbling Time Window)。翻滚窗口能将数据流切分成不重叠的窗口,每一个事件只能属于一个窗口。// 用户id和购买数量 stream
val counts: DataStream[(Int, Int)] = ...
val tumblingCnts: DataStream[(Int, Int)] = counts// 用userId分组.keyBy(0) // 1分钟的翻滚窗口宽度.timeWindow(Time.minutes(1))// 计算购买数量.sum(1) 
  • Sliding Time Window
 我们可以每30秒计算一次最近一分钟用户购买的商品总数。这种窗口我们称为滑动时间窗口(Sliding Time Window)。在滑窗中,一个元素可以对应多个窗口。通过使用 DataStream API,我们可以这样实现:val slidingCnts: DataStream[(Int, Int)] = buyCnts.keyBy(0) .timeWindow(Time.minutes(1), Time.seconds(30)).sum(1)
  • Tumbling Count Window

当我们想要每100个用户购买行为事件统计购买总数,那么每当窗口中填满100个元素了,就会对窗口进行计算,这种窗口我们称之为翻滚计数窗口(Tumbling Count Window),上图所示窗口大小为3个。通过使用 DataStream API,我们可以这样实现:

// Stream of (userId, buyCnts)
val buyCnts: DataStream[(Int, Int)] = ...val tumblingCnts: DataStream[(Int, Int)] = buyCnts// key stream by sensorId.keyBy(0)// tumbling count window of 100 elements size.countWindow(100)// compute the buyCnt sum .sum(1)
  • Session Window

在这种用户交互事件流中,我们首先想到的是将事件聚合到会话窗口中(一段用户持续活跃的周期),由非活跃的间隙分隔开。如上图所示,就是需要计算每个用户在活跃期间总共购买的商品数量,如果用户30秒没有活动则视为会话断开(假设raw data stream是单个用户的购买行为流)。Session Window 的示例代码如下:

// Stream of (userId, buyCnts)
val buyCnts: DataStream[(Int, Int)] = ...val sessionCnts: DataStream[(Int, Int)] = vehicleCnts.keyBy(0)// session window based on a 30 seconds session gap interval .window(ProcessingTimeSessionWindows.withGap(Time.seconds(30))).sum(1)

一般而言,window 是在无限的流上定义了一个有限的元素集合。这个集合可以是基于时间的,元素个数的,时间和个数结合的,会话间隙的,或者是自定义的。Flink 的 DataStream API 提供了简洁的算子来满足常用的窗口操作,同时提供了通用的窗口机制来允许用户自己定义窗口分配逻辑。
公众号推荐

  • 全网唯一一个从0开始帮助Java开发者转做大数据领域的公众号,BAT团队集体开发~
  • 海量【java和大数据的面试题+视频资料】整理在公众号,关注后可以下载~
  • 更多大数据技术欢迎和作者一起探讨~

9e629611696feb9e7e7eb9992ed7025b.png

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

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

相关文章

php中pandans,Python地信专题 | 基于geopandas的空间数据分析-文件IO篇

本文对应代码和数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes1 简介在上一篇文章中我们对geopandas中的坐标参考系有了较为深入的学习&#xff0c;而在日常空间数据分析工作中矢量文件的读入和写出&#xff0c;是至关重要的环节。作为基于geo…

ros创建工作空间_ROS入门学习之七Moveit机械臂控制

1.MoveIt!系统架构MoveIt是什么&#xff1a;一个易于使用的集成化开发平台由一系列移动操作的功能包组成&#xff1a;运动规划、操作控制、3D感知、运动学、控制与导航算法提供友好的GUI可应用于工业、商业、研发和其他领域ROS社区中使用度排名前三的功能包系统架构用户接口(Us…

matlab中quat2angle,matlab 学习记录

(1)元胞数组的创建a{matlab,20;ones(2,3),1:10} %创建方法一b[{matlab},{20};{ones(2,3)},{1:10}] %创建方法二c{10} …

常用于评价回归模型优劣的统计量包括( )。_第四十一讲 R-判断回归模型性能的指标...

当回归模型建立好以后&#xff0c;如何评价该回归模型是否与另一个回归模型有区别&#xff0c;如何比较两个回归模型的性能&#xff1f;这一讲中&#xff0c;我们将给大家介绍几个评价回归模型性能的统计指标。1. 模型性能指标在回归模型中&#xff0c;最常用的评估指标包括&am…

matlab mandrill,MATLAB】MATLAB的自带数据及可生成数据的函数

有时我们需要验证一些算法&#xff0c;但又不方便使用自己的数据&#xff0c;这时使用MATLAB自带的数据会带来很多便利&#xff0c;方便交流并且也不用担心未发表的工作会泄露。这里整理了一些MATLAB自带的数据……说明&#xff1a;【数据】表示直接可装载的(load)&#xff0c;…

python 常用包_Python常用指引

Python常用指引Python常用指引的形式来源于Linux文档项目的常用指引章节&#xff0c;是一系列独立、指定主题并尝试完全覆盖该主题的文章集合。致力于提供比Python库参考帮助更详尽的文档。Python 3 是 Python 的未来&#xff0c;但 Python 2 仍处于活跃使用阶段&#xff0c;最…

java中equals函数所在的类,重写Java中的equals方法介绍

Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型,不论是对象数组,列表等都扩展了Object类.了解学习Object中方法的设计原理和实现方式有助于更好的学习理解java语言.下面,我们首先学…

读取当前linux进程内存_(笔记)Linux上的内存分配

作者: LemonNan原文: https://juejin.im/post/5ee3c34a518825430c3ad31d前言本篇是对Linux内存分配的一个学习笔记.程序内存结构下面是在 Linux/x86-32 中典型的一个进程内存结构文本段包含了进程运行的程序机器语言指令. 文本段具有只读属性, 以防止进程通过勘误指针意外修改自…

php改成IP连接数据库,thinkphp,pdo连接数据库,host自动被替换成了本机ip

class DBAccess extends PDO{ private $charset; // 数据库字符集public $cacheDir_cache_$98sdf29fw!d#s4fef/; public $prename; public $time; function __construct($dsn, $user, $password){ try{ parent::__construct($dsn, $user, $pa…

django开源电子文档管理系统_「开源推荐」BookStack v2.8 发布,简洁美观的在线文档管理系统

程序介绍BookStack&#xff0c;基于 Mindoc、使用Go语言的Beego框架开发的功能类似GitBook和看云的在线文档管理系统&#xff0c;拥有简洁美观的页面布局&#xff0c;实现了文档采集、导入、电子书生成以及版本控制等强大的文档功能&#xff0c;并推出了配套的开源微信小程序 B…

python tcp通信如何实现多人聊天,Python实现多用户全双工聊天(一对一),python多用户,多用户全双工聊天简陋...

Python实现多用户全双工聊天(一对一)&#xff0c;python多用户,多用户全双工聊天简陋多用户全双工聊天简陋版简单实现了两个客户端之间的通信&#xff0c;客户端发送消息&#xff0c;先由服务器接收&#xff0c;然后服务器转发到另一客户端。该版本功能非常简陋&#xff0c;仅仅…

matlab 随机森林算法_随机森林算法

随机森林是一种灵活&#xff0c;易于使用的机器学习算法&#xff0c;即使没有超参数调整&#xff0c;也能在大多数情况下产生出色的结果。它也是最常用的算法之一&#xff0c;因为它简单&#xff0c;并且可以用于分类和回归任务。在这篇文章中&#xff0c;您将学习随机森林算法…

python教程循环语句,Python基础教程之循环语句(for、while和嵌套循环)

循环可以用来重复执行某条语句&#xff0c;直到某个条件得到满足或遍历所有元素。1 for循环是for循环&#xff0c;可以把集合数据类型list、tuple、dict、set的元素遍历出来。(1)对list进行循环city_list [广州,深圳,东莞,佛山]city_list [广州,深圳,东莞,佛山]for city in c…

python课程的中期报告_电子课程设计中期报告

电子线路课程设计中期报告 电信工一班 王绪泉 200900121181 1. 设计题目 设计一个数字显示的电子温度计&#xff0c;要求包含模数转换模块&#xff0c;可数字显示&#xff0c;可测定温 度范围在 0 到 100 摄氏度之间&#xff0c;精度允许误差正负 0.5 摄氏度。 设计思路 本题目…

php-fpm 配置文件位置,php

先清空php-fpm.conf> /usr/local/php/etc/php-fpm.conf输入以下内容&#xff1a;[global]pid /usr/local/php/var/run/php-fpm.piderror_log /usr/local/php/var/log/php-fpm.log[www]listen /tmp/php-fcgi.sockuser php-fpmgroup php-fpmpm dynamicpm.max_children …

opengl 纹理贴到对应的位置_一步步学OpenGL(27) -《公告牌技术与几何着色器》

教程 27公告牌技术与几何着色器原文&#xff1a; http://ogldev.atspace.co.uk/www/tutorial27/tutorial27.htmlCSDN完整版专栏&#xff1a; https://blog.csdn.net/cordova/article/category/9266966背景从最初的一系列教程我们已经应用过了顶点着色器和片段着色器&#xff0c…

thinkphp如何通过php请求接口,thinkphp怎么做json数据接口

function checkUser(){//获取用户名 密码$uname$_GET[uname]; $upass$_GET[upass]; $userM("user");//访问数据库中的t_user表(t_ 以在config.php中设置为表前缀了)$where"uname".$uname." and upass".$upass."";//查询…

python 工资管理软件_基于[Python]的员工管理系统

基于[Python]的员工管理系统 ———————————————————————————————— 简介 使用python语言来完成一个员工管理系统&#xff0c;员工信息包含&#xff1a;员工工号&#xff0c;姓名&#xff0c; 年龄&#xff0c;性别&#xff0c;职位&#xff0c;工…

php执行zip压缩,PHP执行zip与rar解压缩方法实现代码

Zip&#xff1a;PclZip http://www.phpconcept.net/pclzip/index.en.phpRar&#xff1a;PECL rar http://pecl.php.net/package/rar以往过去要在php下执行解压缩程序&#xff0c;无非最常见的方法是写command 然后用exec()等执行函式去跑这在Windows下或许可以&#xff0c;但换…

python 当前目录_virtualenvwrapper打造多版本Python环境

前言面对多个 Python 开发项目时&#xff0c;需要针对不同的项目创建相应的开发环境。通常情况下&#xff0c;使用 virtualenv 创建一个虚拟的独立 Python 环境&#xff0c;但是 virtualenv 创建的环境相对分散不便于管理。这里推荐使用 virtualenvwrapper 来创建集中的便于管理…