Flink如何处理迟到数据?

news/2025/1/3 5:32:01/

        在flink中进行窗口计算时,由于乱序流数据的问题,往往会出现迟到数据,迟到数据未参与所属窗口的计算会对计算结果的准确性产生影响,对此,Flink有如下三种方法来保障结果的准确性。

(1)水位线的延迟

        对于乱序流数据,水位线可以设置延迟 Flink的Watermark水位线详解-CSDN博客,但一般不宜将延迟时间设置的过大,否则流处理的实时性将会大大降低。因此还是会有迟到数据。

(2)窗口允许处理迟到数据

        当水位线到达窗口结束时间时,默认窗口会关闭,之后来的数据就会被丢弃了,因此可以延迟窗口的关闭时间。具体而言:在设置了水位线延迟的基础上,大部分的迟到数据已经能够被正确处理了,因此水位线到达窗口结束时间时,先触发计算,得到一个近似正确的结果,但窗口不会关闭,之后每来一个迟到数据,就再触发窗口计算,不断修正计算结果并输出。这就类似lambda架构。可以通过对windowedStream(对datastream调用window分配窗口后就是windowedStream)调用allowedLateness方法设置等待时间。

(3)迟到数据放入窗口侧输出流

        即使有了上述的双重保障,但由于窗口不能一直等待,总会关闭,最终还是可能会有丢失数据,这时候该怎么办呢?Flink还提供了一种解决方法:将窗口关闭之后到来的迟到数据收集到侧输出流,保证数据不丢失。之后获取侧输出流中的数据,判断所属窗口,手动对结果进行更行,保证最终结果一定时正确的。

        具体实现时对windowedStream调用sideOutoutLateData()方法,传入一个输出标签OutputTag用来标记是迟到数据流即可。基于窗口处理完成之后的datastream调用getSideOutput方法,传入对应的OutputTag即可获取迟到数据流进行后续处理。


http://www.ppmy.cn/news/1559542.html

相关文章

Redis可视化工具 RDM mac安装使用

第一步:https://pan.baidu.com/s/10vpdhw7YfDD7G4yZCGtqQg?at1673701651004将dmg下载 第二部:点击下载的dmg文件进行安装、mac可能会提示: 无法验证此App不包含恶意软件 解决方法: 打开系统偏好设置>安全性与隐私>通用&am…

Qt仿音乐播放器:绘画、图片

一、铺垫 1.Qt中给程序员提供的组件,基本上都是矩形,那如果程序员想画一个三角形和圆形;那就必须要使用绘画类; 二、绘画 注意:关于 paintEvent:paintEvent 会在以下情况下被触发: 1.控件⾸次创建. 2.控…

FFmpeg来从HTTP拉取流并实时推流到RTMP服务器

当使用FFmpeg来从HTTP拉取流并实时推流到RTMP服务器时,你可以使用以下命令: ffmpeg -i http://输入流地址 -c:v copy -c:a copy -f flv rtmp://RTMP服务器地址/应用名称/流名称 这是一个基本的命令示例,其中: - -i http://输入流地…

【HiVT】论文环境及Argoverse 1环境配置踩坑

HiVT源码链接:https://github.com/ZikangZhou/HiVT 1 论文环境配置 论文的环境配置在HiVT源码的README中有写(见下图) 但是有一些步骤需要注意,以下重新叙述一遍安装步骤并标出一些坑: 1.Clone this repository: g…

Java基础(三):桌球案例

桌球案例 图片资源: 代码 package com.bjsxt; import java.awt.*; import javax.swing.*;import static com.sun.glass.ui.Cursor.setVisible;public class BallGame extends JFrame {Image ball Toolkit.getDefaultToolkit().getImage("../../images/ball.…

log4j 单独设置某个类或者某个包的级别

原本的设置 log4j.rootLogger INFO, dailyfilelog4j.appender.dailyfile.DatePattern.yyyy-MM-dd log4j.appender.dailyfile.Threshold INFO log4j.appender.dailyfile org.apache.log4j.DailyRollingFileAppender log4j.appender.dailyfile.File /var/log/zeppelin/zeppe…

Qt 中实现系统主题感知

【写在前面】 在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观。 Qt 作为一个跨平台的C图形用户界面应用程序开发框架,提供…

电子电器架构 ---什么是智能电动汽车上的BMS?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…