时间窗口(Time Windows)的原理和使用
概述
flink中支持多种窗口,包括:时间窗口,session窗口,count窗口等,本文简单介绍这些窗口的原理,并通过例子说明如何使用这些窗口。
时间窗口(Time Windows)
最简单常用的窗口形式是基于时间的窗口,flink支持两种时间窗口:
翻滚时间窗口(tumbling time window)
翻滚时间窗口的窗口是固定的,比如设定一个1分钟的时间窗口,该时间窗口将只计算当前1分钟内的数据,而不会管前1分钟或后1分钟的数据。
如上图所示,编写了一个1分钟的翻滚窗口,用来收集最后一分钟的值,并在1分钟结束时输出它们的总和。
从上图可见,该窗口只会计算从当前计时开始的1分钟内的数据,当1分钟完成时输出结果。然后,从完成这一刻起开始计算1分钟内的数据,依次类推。
val env = StreamExecutionEnvironment.getExecutionEnvironmentval text = env.socketTextStream("localhost", 9999)val counts = text.flatMap { _.toLowerCase.split("\\W+") filter { _.nonEmpty } }.map { (_, 1) }.keyBy(0).timeWindow(Time.seconds(5)) //定义一个5秒的翻滚窗口.sum(1)
滑动时间窗口(sliding time window)
滑动窗口,顾名思义,该时间窗口是滑动的。所以,从概念上讲,这里有两个方面的概念需要理解:
可以在Flink中定义1分钟的滑动窗口,每30秒滑动一次,定义如下:
stream.timeWindow(Time.minutes(1), Time.seconds(30))
滑动窗口使用例子
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.api.windowing.time.Timeobject WindowWordCount {def main(args: Array[String]) {println("start word count")val env = StreamExecutionEnvironment.getExecutionEnvironmentval text = env.socketTextStream("localhost", 9999)val counts = text.flatMap { _.toLowerCase.split("\\W+") filter { _.nonEmpty } }.map { (_, 1) }.keyBy(0).timeWindow(Time.seconds(5), Time.seconds(3)) // 定义了一个滑动窗口,窗口大小为5秒,每3秒滑动一次.sum(1)counts.print()println("end word count")env.execute("Window Stream WordCount")println("exit now!")}
}
可以在另一个终端通过命令nc -lk 9999输入一些数据,查看一下效果,并理解一下。
this is a test, time windows.
时间窗口(Time Windows)的原理和使用相关推荐
- Flink从入门到真香(12、Flink一大利器-时间窗口)
flink中支持多种窗口,包括:时间窗口,session窗口,统计窗口等等,能想到的基本都可以实现 时间窗口(Time Windows) 最简单常用的窗口形式是基于时间的窗口,flink支持三种种时间 ...
- 限流算法-固定时间窗口
本文介绍了固定时间窗口限流算法. 前言 首先限流的算法有很多种,比如固定时间窗口限流算法.滑动时间窗口算法.漏桶算法.令牌桶算法,其余的算法后续我们会一一介绍. 一.限流场景 站在服务调用方的角度来说 ...
- Flink窗口全解析:三种时间窗口、窗口处理函数使用及案例
我们经常需要在一个时间窗口维度上对数据进行聚合,窗口是流处理应用中经常需要解决的问题.Flink的窗口算子为我们提供了方便易用的API,我们可以将数据流切分成一个个窗口,对窗口内的数据进行处理.本文将 ...
- 初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程
@TOC初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程 [1]什么是windows API Windows API 中文翻译过来就是windows应用程序接口(Applica ...
- 【Flink】各种窗口的使用(处理时间窗口、事件时间窗口、窗口聚合窗口)
文章目录 一 Flink 中的 Window 1 Window (1)Window概述 (2) Window类型 a 滚动窗口(Tumbling Windows) b 滑动窗口(Sliding Win ...
- Flink教程(3) 大白话 时间 窗口 watermark
大白话 时间 窗口 watermark 一.前言 二.流处理术语 1 延迟和吞吐 1.1 延迟 1.2 吞吐 2 数据流上的操作 2.1 数据接入和数据输出 2.2 转换操作 2.3 滚动聚合 2.4 ...
- sentinel 时间窗口_Sentinel使用令牌桶实现预热【原理源码】
前言 Sentinel的QPS流控效果有快速失败.预热模式.排队等待.预热+排队等待模式,本文主要分析预热模式中是如何使用令牌桶算法限流的. 一.流控效果源码结构 在FlowRule更新缓存时,根据配 ...
- Java 实现滑动时间窗口限流算法,你见过吗?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | dijia478 来源 | https://w ...
- 窗口消息——Windows核心编程学习手札之二十六
窗口消息 --Windows核心编程学习手札之二十六 Windows允许一个进程至多建立10000个不同类型的用户对象(user object):图符.光标.窗口类.菜单.加速键表等,当一个线程调用一 ...
最新文章
- 《孤独是一个人的清欢》读书感悟
- 获取客户端真实IP地址
- laravel5.6 数据库获取数据模式变为’数组‘
- linux docker导入镜像,Docker镜像的导入和导出
- apache ignite_Kubernetes集群上的Apache Ignite和Spring第3部分:测试应用程序
- 推荐系列文章:《DotText源码阅读》
- linux bash 历史记录,Linux Bash History 命令历史记录
- java中logger关闭log_Log4J如何关闭Logger对象的IO流资源
- codeblocks修改MINGW位置使它能编译Build
- 关于CMR和SMR技术硬盘的选择
- c语言中find的作用,c语言find函数的用法详解
- Linux下 df 命令查看磁盘空间
- android 微博一键关注,新浪微博怎样一键关注多个好友
- V831——PWM驱动舵机
- linux中常用的压缩命令,Linux中常用的压缩和解压缩命令汇总
- X3D制作简易三维动画
- 计算机函数说课ppt,《excel公式与函数》说课稿
- [转]从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA
- 易语言跳出循环 c,易语言教程循环控制(到循环尾和跳出循环)
- 大学计算机操作题模拟,《大学计算机基础》上模拟试卷操作题