【Flink】Flink allowedLateness 与 watermark 的区别
文章目录
- 1.概述
- 2. 那么watermark和lateness区别在哪里呢?
1.概述
60-300-022-使用-延迟数据-Flink中allowedLateness详细介绍
Flink对于乱序数据怎么办呢?
方案就是 watermark。
watermark
,直译为水位线,就是元素可以迟到多久才去关闭窗口。例如一个窗口是[0-5),,watermark允许最多延迟3s,那么一个6s的事件,它的watermark就应该是3,一个7s的watermark是4,这两个都落在窗口中
在flink流处理的Source中或者处理window之前,都可以通过调用assignTimestampsAndWatermarks
来指定如何从消息中获得当前事件时间和获得当前事件的watermark
。可以直接扩展几个预定义的类实现。默认watermark是0,也即watermark时间等于事件时间。watermark不是对每一条数据都会生成的,默认配置每200ms生成一次,可以通过env.getConfig().setAutoWatermarkInterval()
配置产生间隔。
此外,flink还允许在流处理window后设定allow lateness来指定一个最晚的时间,没有超过这个最晚时间,window还是未销毁,可以触发计算。(默认的lateness也是0)
2. 那么watermark和lateness区别在哪里呢?
这个主要是配合trigger的行为,默认的EventTimeTrigger
,之前的元素是不触发window计算的,在watermark达到window end的时候,会触发一次window计算;之后的每一个迟到的元素进入窗口,都会触发一次window计算
。所以watermark是保证大部分元素的时间落在windowend+watermark的区间内,减少window计算的触发次数
。如果是其他trigger方式,watermark的意义不大。窗口触发计算时,会将窗口数据传给后续的处理过程处理。
很多地方把概念会搞混:
- 事件时间
<
窗口end+watermark大小,元素落在窗口内 - flink返回的watermark时间=
事件时间-watermark大小
- watermark时间
<
窗口end,元素落在窗口内
如上所述,EventTimeTrigger等一些默认的trigger,在watermark时间达到window end之前是不会触发的,如果事件有一段时间暂停了没有新元素,或者窗口期很长,则导致一直没有触发计算获得结果,延迟比较大,这时候可以使用ContinuousProcessingTimeTrigger。
对于延迟的数据,也可以定时可以把它揪出来处理。通过对WindowedStream设置sideOutputLateData,之后从WindowedStream处理的结果SingleOutputStreamOperator的getSideOutput(OutputTag)方法得到被丢弃的数据(这个是需要定时任务去处理)
只有所有的线程的最小watermark都满足watermark 时间 >=
window_end_time时,触发历史窗才会执行。
【Flink】Flink allowedLateness 与 watermark 的区别相关推荐
- 关于Flink中time与watermark的理解
关于Flink中time与watermark的理解 空间和时间只是我们人类思考的模式,并不是我们赖以生存的条件. --爱因斯坦 时间属性是流处理中最重要的一个方面,是流处理系统的基石之一:流计算是一种 ...
- 大数据计算引擎之Flink Flink CEP复杂事件编程
原文地址:大数据计算引擎之Flink Flink CEP复杂事件编程 复杂事件编程(CEP)是一种基于流处理的技术,将系统数据看作不同类型的事件,通过分析事件之间的关系,建立不同的时事件系序列库,并利 ...
- 凌波微步Flink——Flink的技术逻辑与编程步骤剖析
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/95459606 本文出自[我是干勾鱼的博客] Ingredients: Java: ...
- 凌波微步Flink——Flink API中的一些基础概念
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/95355619 本文出自[我是干勾鱼的博客] Ingredients: Java: ...
- 60-300-022-使用-延迟数据-Flink中allowedLateness详细介绍
1.视界 2.概述 当指定一个允许延迟大于0时,window以及window中的内容将会继续保持即使水印已经达到了window的最后时间.在这种情况下,当一个延迟事件到来而未丢弃时,它可能会触发w ...
- Flink中allowedLateness介绍与测试
默认情况下,当watermark通过end-of-window之后,再有之前的数据到达时,这些数据会被删除. 为了避免有些迟到的数据被删除,因此产生了allowedLateness的概念. 简单来讲, ...
- Flink Pre-defined Timestamp Extractors / Watermark Emitters(预定义的时间戳提取/水位线发射器)...
https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/event_timestamp_extractors.html 根据官网 ...
- flink 自定义 窗口_【Flink 精选】阐述 Watermark 机制,剖析 Watermark 的产生和传递流程...
本文阐述 Flink 的事件时间和 Watermark 机制,剖析 Watermark 产生和传递的流程. 1 Event time 和 Watermark 的关系 1.1 Event time 和 ...
- flink实战--水印(watermark)终极总结
扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦 水印(waterMark) 了解水印前需要了解事件时间(eventTime)和处理时间(processTime)的概念,参考 ...
最新文章
- GPT-3:人工智能的新突破
- thinkphp伪静态(url重写)
- 郎咸平:诸葛亮是一名优秀的企业家吗?
- 机器学习笔记:VAE
- buck电路matlab,buck变换器介绍_buck变换器matlab仿真
- 1.3 xss原理分析与剖析(4)
- Visual Studio 2022 Preview 3和2019 16.11发布
- .NET Core 小程序开发零基础系列(1)——开发者启用并牵手成功
- 【Python-3.5】变量命名规范
- 跳跃回溯____寻找最长平台
- 博客园鼠标点击烟花特效
- L--弹出层js实例
- 威富通 全付通 中信 支付 PHP 一些问题总结(签名机制,sign:This field is required,no start line ,回调机制,漏单)
- Mysql 1864 主从错误解决方法
- Caused by: org.dom4j.DocumentException异常信息记录
- 适用于***测试不同阶段的工具收集整理
- 全基因组尺度的增强子--靶基因映射图谱解码非编码突变
- 如何快速有效的学习 Python ?阿里高级开发工程师给出建议
- gym 100543 CERC 2014 L Outer space invaders
- 计算机版本歌曲,酷我音乐2017旧版大全