Flink Window那些事——Window大分类/生命周期/分配器

1、啥是Window?Window有啥作用?
Flink 认为 Batch 是 Streaming 的一个特例,所以 Flink 底层引擎是一个流式引擎,在上面实现了流处理和批处理。而窗口(window)就是从 Streaming 到 Batch 的一个桥梁。Flink 提供了非常完善的窗口机制,这是Flink 最大的亮点之一(其他的亮点包括消息乱序处理,和 checkpoint 机制)。

Window是一种切割无限数据集为有限块并进行相应计算的处理手段(跟keyBy一样,也是一种分组手段,只不过同一event可能被分到多个组)

在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的网页。在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。

2、Flink Window大分类
2.1、Keyed Windows(在已经按照key分组的基础上(KeyedStream),再构建多任务并行window)

2.2、Non-Keyed Windows(在未分组的DataStream上构建单任务window,并行度是1,API都带All后缀)

2.3、Keyed Windows vs Non-Keyed Windows(以基于time的window为例)

3、Window的生命周期
3.1、创建:当属于该窗口的第一个元素到达时就会创建该窗口

3.2、销毁:当时间(event/process time)超过窗口的结束时间戳+用户指定的延迟时(allowedLateness(<time>)),窗口将被移除(仅限time-based window)

例如:对于一个每5分钟创建Tumbling Windows(即翻滚窗口)窗口,允许1分钟的时延,Flink将会在12:00到12:05这段时间内第一个元素到达时创建窗口,当watermark超过12:06时,该窗口将被移除。

3.2、Trigger(触发器)
指定了窗口函数在什么条件下可被触发,触发器还可以决定在创建和删除窗口之间的任何时间清除窗口的内容。在这种情况下,清除仅限于窗口中的元素,而不是窗口元数据。这意味
着新数据仍然可以添加到该窗口中。

例如:当窗口中的元素个数超过4个时― 或者 ‖当水印达到窗口的边界时―触发计算

3.3、Window的函数
函数里定义了应用于窗口(Window)内容的计算逻辑

3.4、Evictor(驱逐者)
将在触发器触发之后或者在函数被应用前后,清除窗口中的元素

4、Window Assinger是干啥的
当你决定stream是否keyby之后,window是没有构建的,你还需要指定一个window Assinger用于定义元素如何分配到窗口中。

window Assinger如何指定?

Keyedstream:window(WindowAssigner)
non-keyed streams :windowAll(WindowAssigner)

window Assinger的作用:负责将每个传入的元素分配给一个或多个窗口

原文地址:https://www.cnblogs.com/linjiqin/p/12586599.html

时间: 2024-12-24 15:33:58

Flink Window那些事——Window大分类/生命周期/分配器的相关文章

angular2系列教程(十一)路由嵌套、路由生命周期、matrix URL notation

今天我们要讲的是ng2的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子: 上节课,我们讲解了英雄列表,这节课我们讲解危机中心. 源代码: https://github.com/lewis617/angular2-tutorial/tree/gh-pages/router 运行方法: 在根目录下运行: http-server 路由嵌套 我们在app/app.component.ts中定义了路由url和视图组件,其中包括这样一项: app/app.componen

Django请求生命周期

1. Django请求生命周期的概念 用户在浏览器上输入url连接到看都页面的时间内, Django后台发生的事 2. Django请求生命周期的基本概述 1. 文字描述 第一步:浏览器发起请求 第二步:WSGI创建socket服务端,接收请求(Httprequest) 第三步:中间件处理请求 第四步:url路由,根据当前请求的URL找到视图函数 第五步:view视图,进行业务处理(ORM处理数据,从数据库取到数据返回给view视图:view视图将数据渲染到template模板:将数据返回) 第

js实现跨域(jsonp, iframe+window.name, iframe+window.domain, iframe+window.postMessage)

一.浏览器同源策略 首先我们需要了解一下浏览器的同源策略,关于同源策略可以仔细看看知乎上的一个解释.传送门 总之:同协议,domain(或ip),同端口视为同一个域,一个域内的脚本仅仅具有本域内的权限,可以理解为本域脚本只能读写本域内的资源,而无法访问其它域的资源.这种安全限制称为同源策略. ( 现代浏览器在安全性和可用性之间选择了一个平衡点.在遵循同源策略的基础上,选择性地为同源策略"开放了后门". 例如img script style等标签,都允许垮域引用资源.) 下表给出了相对 

window.showModalDialog 与window.open传递参数的不同?

简单的说,就是一个在弹出窗口之后可以做其它的事,即window.open 另一个在弹出窗口之后不能做其它的事,只能是关闭了当前的窗口之后才能做其它的事,即window.showModalDialog 那么两者在使用上有什么不同呢?他们分别是如何和父窗口进行交互的呢? 先来看window.showModalDialog的例子: 我这里现在有一个父窗体parent.jsp,它里面有一个方法 function openChild(){                var temp = window.

连载《一个程序猿的生命周期》- 29、解决基层员工提出的难题,也是无奈之事

一个程序猿的生命周期 微信平台 口    号:职业交流,职业规划:面对现实,用心去交流.感悟.  公众号:iterlifetime二维码:  百木-ITer职业交流奋斗 群:141588103 正文: 老员工走了.新来的员工,不久也走了.HR不久的将来也是如此.刚开始有些悲凉的感觉,后来慢慢的适应了走马灯式的人来人往. 任何老板或公司对待每个员工的态度是不一样的,人的离职也是很正常的一件事,天下没有不散的宴席,但是并不影响公司的正常运营,有网友评论说:我现在的公司已经21年了,年离职率100%还

连载《一个程序猿的生命周期》-《发展篇》- 16.最近两件事触动了我,30多岁真是死都不能死的年纪

坐着从北京驶向西域的绿皮火车,此时的出差感觉是一种放松,爱谁谁.受啥啥......我在火车上,出差成为一种旅行.在大城市的人就像上了发条的钟摆,一刻都不能停下来.最近上电梯N次忘按楼层,默默的站在那,谁也不会提醒你,缓过神儿来之后意识到这种间歇又是不正常的. 最近发生两件事让我思考了很久,可能每个人的钟摆真是无法停下来,因为人真的无法为自己而活,想来想去都有一种无奈的恐惧. 1.每个人都会老去 我二老爷(老爷的弟弟)有一个女儿.两个儿子,年岁大了,被送进了敬老院.按央视报道的,那些卖了宅基础和田

JS (function (window, document, undefined) {})(window, document)的真正含义

原文地址:What (function (window, document, undefined) {})(window, document); really means 按原文翻译 在这篇文章中,我们将探讨标题所暗示的内容,并解释自调用函数设置给我们带来了什么. 有趣的是,我被问到关于IIFE(即时调用的函数表达式)的很多,它采用以下设置: (function (window, document, undefined) { // })(window, document); 那么为什么不写一篇关

打开新窗口,window.open 和window.showModalDialog

window.open: window.open是非阻态窗口,也叫非模态窗口,也就是说当你打开window.open这个子窗口后,还可以切换去操作父窗口. 一般的格式是这样的: <span style="font-size:14px;"><strong>window.open('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrol

关于window.onload,window.onbeforeload与window.onunload

★  window.onload  当页面加载完毕的时候执行,即在当前页面进行其他操作之前执行.如,刚进入某个网页的弹窗提示. (  与window.onload相近的可以参考我写的另外一篇记录"比较body.onload(function()).$(document).ready(function())与$(windows).load(function)"  ) ★  window.onbeforeunload 与 window.onunload 的比较 window.onbefor