flink窗口延迟数据处理allowedlateness

@SmartSi @SmartSi     2022-10-23     502

关键词:

1. 什么是迟到数据

之前介绍过,Watermark 可以用来平衡结果的完整性和延迟。除非你选择一种非常保守的 Watermark 生成策略,等待足够长的时间确保应该到的数据已经全部到达(以高延迟为代价确保了数据的完整性),否则你的应用程序很有可能有迟到的数据。

所谓迟到数据是指数据记录元素到达算子后,本应该参与的计算已经执行完毕。在事件时间窗口算子中,如果数据记录元素到达算子时窗口分配器为其分配的窗口因为算子 Watermark 超过了窗口的结束时间而销毁,那么可以认为这条数据记录元素就是迟到数据(迟到数据在窗口计算时就不会被纳入窗口的统计范围内)。可以看出迟到数据本质是指某个 Watermark 之后到来的数据记录元素,并且其时间戳小于 Watermark。所以只有在事件时间语义下,讨论迟到数据的处理才是有意义的。

一般情况 Watermark 不应该把延迟设置得太大,否则流处理的实时性就会大大降低。因为 Watermark 的延迟主要是用来对付分布式网络传输导致的数据乱序,而网络传输的乱序程度一般并不会很大,大多集中在几毫秒至几百毫秒。所以实际应用中,我们往往会给 Watermark 设置一个’能够处理大多数乱序数据的最小延迟’,视需求一般设在毫秒到秒级。保证了低延迟,但是就有可能数据记录在 Watermark 之后到达,必须额外添加一些代码来处理延迟事件。DataStream API 提供了不同的选项来应对迟到的数据记录:

  • 丢弃迟到数据记录
  • 基于迟到数据更新计算结果
  • 将迟到的数据记录输出到单独的数据流中

2. 迟到数据处理

2.1 丢弃迟到数据记录

处理迟到数据元素的最简单方式就是直接将其丢弃&#

flink窗口window(代码片段)

一、基本概念1.窗口分类  TimeWindow:按照时间生成Window。对于TimeWindow,可以根据窗口实现原理的不同分成三类:滚动窗口(TumblingWindow)、滑动窗口(SlidingWindow)和会话窗口(SessionWindow)。  CountWindow:按照指定的数据条... 查看详情

flink窗口函数处理数据(watermark和sideoutput)(代码片段)

@羲凡——只为了更好的活着Flink窗口函数处理数据(Watermark和SideOutput)统计过去5分钟内的一些数据是流处理中最常见的一种模式。这就涉及到经典的一个问题——数据延迟或乱序怎么办?Flink,针对数据延迟或乱序有几... 查看详情

flink流处理的时间窗口

Flink流处理的时间窗口对于流处理系统来说,流入的消息是无限的,所以对于聚合或是连接等操作,流处理系统需要对流入的消息进行分段,然后基于每一段数据进行聚合或是连接等操作。消息的分段即称为窗口,流处理系统支... 查看详情

flink的watermark和window介绍以及延迟数据的处理

...间戳作用:用于处理乱序事件适用场景:基于事件时间做窗口运算产生频率:默认是来一条数据下发一次watermark,但是可以调整setAutoWatermarkInterval参数设置下发watermark的时间间隔,性能会有一定的提升。多并发的情况下,取watera... 查看详情

flink窗口迟到很久的消息处理/sideoutputs旁路输出/防止数据丢失

...乱序/指定时间内获取不到全部数据。allowLateNess:将窗口关闭时间再延迟一段时间。sideOutPut:当指定窗口已经彻底关闭后,就会把所有过期延迟数据放到侧输出流,让用户决定如何处理(最后兜底的操作)... 查看详情

2020-10-31-flink-7(流处理基础)

...据接入与输出转换操作滚动聚合(例如求和最小值最大值)窗口操作(“桶”的有限事件集合):滚动窗口滑动窗口会话窗口处理时间:当前流处理算子所在机子的本地时钟时间事件时间:数据流实际发生时间(将处理速度和内容结果彻底... 查看详情

「flink」flink中的时间类型(代码片段)

Flink中的时间类型和窗口是非常重要概念,是学习Flink必须要掌握的两个知识点。Flink中的时间类型时间类型介绍Flink流式处理中支持不同类型的时间。分为以下几种:处理时间Flink程序执行对应操作的系统时间。所有基于时间的... 查看详情

flink窗口迟到很久的消息处理/sideoutputs旁路输出/防止数据丢失

...乱序/指定时间内获取不到全部数据。allowLateNess:将窗口关闭时间再延迟一段时间。sideOutPut:当指定窗口已经彻底关闭后,就会把所有过期延迟数据放到侧输出流,让用户决定如何处理(最后兜底的操作)... 查看详情

flink窗口迟到很久的消息处理/sideoutputs旁路输出/防止数据丢失

...乱序/指定时间内获取不到全部数据。allowLateNess:将窗口关闭时间再延迟一段时间。sideOutPut:当指定窗口已经彻底关闭后,就会把所有过期延迟数据放到侧输出流,让用户决定如何处理(最后兜底的操作)... 查看详情

flink窗口迟到很久的消息处理/sideoutputs旁路输出/防止数据丢失

...乱序/指定时间内获取不到全部数据。allowLateNess:将窗口关闭时间再延迟一段时间。sideOutPut:当指定窗口已经彻底关闭后,就会把所有过期延迟数据放到侧输出流,让用户决定如何处理(最后兜底的操作)... 查看详情

flink详解系列之五--水位线(watermark)

...制,用来处理实时数据中的乱序问题的,通常是水位线和窗口结合使用来实现。从设备生成实时流事件,到Flink的source,再到多个oparator处理数据,过程中会受到网络延迟、背压等多种因素影响造成数据乱序。在进行窗口处理时... 查看详情

flink原理学习窗口和时间(代码片段)

...据进入Flink的时间。摄取时间也无法避免Flink异常重启后数据处理的不准确问题。一般来说EventTime才是事件真正的时间,也是Flink最大的特点之一,一般业务都是使用事件时间。像ProcessingTime,会产生多次计算结果不同的问... 查看详情

flink原理学习窗口和时间(代码片段)

...据进入Flink的时间。摄取时间也无法避免Flink异常重启后数据处理的不准确问题。一般来说EventTime才是事件真正的时间,也是Flink最大的特点之一,一般业务都是使用事件时间。像ProcessingTime,会产生多次计算结果不同的问... 查看详情

flink的watermark概念解释(代码片段)

...系统时间,默认使用的就是这个词。我们统计Eventtime窗口某个时间段内产生的日志。存在一个问题:kafka出来的数据有可能是乱序的,也有可能是延迟的。这种情况下我们就定义出了watermark得到概念。为什么需要waterma... 查看详情

flink中的时间和窗口(代码片段)

...谷Flink1.13版本笔记.pdf》中第六章Flink中的时间和窗口在流数据处理应用中,一个很重要的操作就是窗口计算。所谓的“窗口”,就是划定的一段时间范围,也就是“时间窗”;对这范围内数据进行处理,就是... 查看详情

flink从kafka获取数据写入mysql的实现(代码片段)

需求获取实时热门商品1、按1分钟的窗口大小,每3秒统计一次,做滑动窗口聚合2、每个窗口聚合,输出每个窗口中点击量前5名的商品3、水印延迟容忍时间为3秒Kafka生产数据packageexam0714;importcom.alibaba.fastjson.JSON;importlom... 查看详情

flink/scala-timewindow处理迟到数据详解(代码片段)

...3.SideOutputLateData四.Flink处理迟到数据实战1.代码分析2.迟到数据处理实战3.日志分析五.总结一.引言在事件时间EventTime语义环境下,窗口中可能出现数据迟到的情况,即Event时间戳小于水位线Watermark,此时数据流未乱序流... 查看详情

flink/scala-timewindow处理迟到数据详解(代码片段)

...3.SideOutputLateData四.Flink处理迟到数据实战1.代码分析2.迟到数据处理实战3.日志分析五.总结一.引言在事件时间EventTime语义环境下,窗口中可能出现数据迟到的情况,即Event时间戳小于水位线Watermark,此时数据流未乱序流... 查看详情