flink Periodic Watermarks 自定义周期性水印

1、BoundedOutOfOrdernessGenerator

/**
 * This generator generates watermarks assuming that elements arrive out of order,
 * but only to a certain degree. The latest elements for a certain timestamp t will arrive
 * at most n milliseconds after the earliest elements for timestamp t.
 */
public class BoundedOutOfOrdernessGenerator implements AssignerWithPeriodicWatermarks<MyEvent> {

    private final long maxOutOfOrderness = 3000; // 3.0 seconds

    private long currentMaxTimestamp;

    @Override
    public long extractTimestamp(MyEvent element, long previousElementTimestamp) {
        long timestamp = element.getCreationTime();
        currentMaxTimestamp = Math.max(timestamp, currentMaxTimestamp);
        return timestamp;
    }

    @Override
    public Watermark getCurrentWatermark() {
        // return the watermark as current highest timestamp minus the out-of-orderness bound
        return new Watermark(currentMaxTimestamp - maxOutOfOrderness);
    }
}

效果解析:

 

2、TimeLagWatermarkGenerator

/**
 * This generator generates watermarks that are lagging behind processing time by a fixed amount.
 * It assumes that elements arrive in Flink after a bounded delay.
 */
public class TimeLagWatermarkGenerator implements AssignerWithPeriodicWatermarks<MyEvent> {

    private final long maxTimeLag = 3000; // 3 seconds

    @Override
    public long extractTimestamp(MyEvent element, long previousElementTimestamp) {
        return element.getCreationTime();
    }

    @Override
    public Watermark getCurrentWatermark() {
        // return the watermark as current time minus the maximum time lag
        return new Watermark(System.currentTimeMillis() - maxTimeLag);
    }
}

效果解析:

 

 

 

转载于:https://www.cnblogs.com/asker009/p/11318290.html

Flink Window分析及Watermark解决乱序数据机制深入剖析 转载自:https://blog.youkuaiyun.com/shenshouniu/article/details/84558874 欢迎加入大数据学习群: **Flink学习视频:**http://edu.51cto.com/sd/88e07 本文决心讲清楚这个纠结的水印Watermark问题,Come on ! 1 The Time 针对stream数据中的时间,可以分为以下三种: Event ...... 阅读详情

相关推荐

Flink 周期性水印的传播 - AssignerWithPeriodicWatermarks 在大数据处理中

在事件时间处理中,数据元素可能不会按照其生成的顺序到达处理程序。为了解决这个问题,Flink 引入了水印的概念。水印是一种时间度量,它表示在某个时间点之前的事件已经到达了处理程序。通过水印,Flink 可以推断事件时间进展并触发时间窗口的计算。水印通常由数据流中的元素附带,并由特殊的时间戳字段表示。例如,如果有一个包含事件时间戳的数据流,可以通过在每个元素中附加一个水印来指示事件时间的进展。

DevEnigma的博客 248

flink watermark介绍及watermark的窗口触发机制

在谈watermark之前,首先需要了解flink的三种时间概念。在flink中,有三种时间戳概念:Event Time 、Processing Time 和 Ingestion Time。其中watermark只对Event Time类型的时间戳有用。

weixin_38251332的博客 1786

Flink周期性Watermark传播:AssignerWithPeriodicWatermarks的使用

在Flink中,提供了两种Watermark的传播方式:周期性Watermark和间断性Watermark。周期性Watermark是指按照一定的时间间隔生成Watermark,并将其传播到所有的Task中。本文介绍了Flink中周期性Watermark的传播方式以及使用AssignerWithPeriodicWatermarks接口生成和传播Watermark的方法。通过定制Watermark生成逻辑,我们可以有效地处理事件时间的延迟和乱序问题,确保计算结果的准确性。二、周期性Watermark的传播。

DevEnigma的博客 307

Flink 源码学习|Watermark 与 WatermarkGenerator

当数据源中消息的事件时间单调递增时,当前事件时间(同时也是最大事件时间)就可以充当 watermark,因为后续到达的消息的事件时间一定不会比当前事件时间小。当输入数据流中消息的事件时间不完全有序,但是对于绝大部分元素,滞后时间通常不会超过一个固定的时间长度时,我们可以通过在当前最大事件时间的基础上减去一个固定延迟时间,来生成 watermark。再到达比 Watermark 的事件时间更小的消息,即在 Watermark 后到达的事件时间更小的消息视作延迟消息。接口,既可以基于消息,也可以基于周期。

长行 1711

TI DSP TMS320F280025 Note1:工程模板Template创建

该方法新建的工程支持寄存器开发,同时也支持库函数开发,新建后移动该工程也不需要重新修改路径,路径使用变量定义,使用方便、移植性能高

weixin_52849254的博客 2302

WinCC ActiveX控件“许可证缺失”故障排查:从注册表修复到系统兼容性全解析

本文深入解析WinCC ActiveX控件报错“未找到许可证信息”的根本原因与解决方案。核心在于系统注册表中控件的设计时许可证密钥丢失或损坏。文章提供了从手动修复注册表、排查64位系统兼容性,到预防性环境部署的全流程专业指南,帮助工程师彻底解决这一常见故障。

oil88的博客 646

flink DataStream API 官网整理-1.13

本博客基于 flink 1.13 官网中的 DataStream API 部分内容进行翻译整理。

第一片心意的博客 1611

FPGA:将FIFO封装成AXI接口的IP

封装AXI_stream的接口IP核

m0_46830519的博客 4216

Flink自定义生成 Watermark

生成水印watermark’

qq_20671779的博客 1448

《UDS协议从入门到精通》系列——图解0x19:读取故障码信息

认识最核心的诊断服务“0x19”!!全网最强图解!一文搞懂所有常用子服务!

车载系统攻城狮 1万+

Python爬虫实战:模拟登录知乎 – 通过加密参数和验证码实现自动登录

通过本篇博客的讲解,我们学习了如何通过 POST请求 和 验证码识别,模拟登录知乎并爬取用户信息、问题数据。随着爬虫技术的发展,面对更复杂的反爬虫机制,我们可以不断调整策略,以绕过这些防护,实现数据的自动化抓取。

2201_76125261的博客 731

轻松通关Flink第25讲:Flink 中 watermark 的定义和使用

Flink 本身提供了两个预定义实现类去生成水印:AscendingTimestampExtractor 时间戳递增BoundedOutOfOrdernessTimestampExtractor 处理乱序消息和延迟时间这一课时讲解了生产环境中正确使用 Watermark 需要注意的事项,并且介绍了如何保证 Kafka 消息的全局有序,Flink 中自定义的时间戳提取器和水印发射器;最后用一个案例讲解了如何正确使用水印和设置乱序事件。通过这一课时你可以学习到生产中设置水印的正确方法和原理。

sucaiwa的博客 780

基于3D相机的人体穴位识别与标注系统——完整Python实现方案

摘要 本文提出了一种基于3D相机的人体穴位识别与标注系统完整实现方案。系统采用Intel RealSense D435相机实时采集RGB-D数据,结合MediaPipe Pose模型进行人体33个关键骨骼点的三维姿态估计。通过建立穴位与骨骼关键点的映射关系,利用相机内参和深度信息将二维图像坐标转换为三维空间坐标。系统采用模块化设计,包含数据采集层、算法处理层、坐标转换层和可视化层,实现了穴位定位、三维坐标转换和点云可视化功能。关键技术包括:基于骨度折量法的穴位映射算法、深度图像到三维点云的转换方法,以及Op

AI的内部世界的博客 271

如何在Flink中生成WaterMark

如何在Flink中生成WaterMark1. 通过SourceFunction接口定义timestamps和Watermarks2. 通过Timestamp Assigner和Watermark Generator实现2.1 通过自带Timestamp assigner指定Timestamp和watermark2.1.1 periodic watermarks(1) 升序模式(2) 固定时间间隔2.1.2 puncuated watermarks2.2 自定义Timestamp分配器和Watermark生成

Accelerating的博客 1896

3、无限维系统理论中的算子与半群:概念、定理及应用

本博文深入探讨了无限维系统理论中的两个核心概念:里茨谱算子与卢默-菲利普斯定理。文章首先介绍了里茨基的定义与性质,分析了谱、预解集及特征值在无限维系统中的特性,并详细阐述了里茨谱算子的条件及其生成C0-半群的能力,结合阻尼欧拉-伯努利梁模型展示了其应用。随后,文章介绍了卢默-菲利普斯定理及其推论,通过多个偏微分方程实例(如一阶方程、柔性梁、波动方程和扩散问题)说明如何利用该定理判断算子是否生成压缩半群。此外,还强调了状态空间选择和边界条件对系统适定性的重要影响,并总结了相关问题的解决步骤与方法。

flink9streamer的博客 147

S32K324 Stack异常分析及解决方案

在项目开发过程中,在一次软件变更时,调整了task优先级之后导致应用层软件中的float数据经常性的变为NAN,导致应用层功能失效。本文记录下这个bug的分析及解决过程。该问题排查了好几天,最开始正向排查不出来,差点放弃了,ETAS OS也没有人支持,只能换一种思路,通过反向推,最终定位到问题,能完美解决,还是很欣慰的。遇到问题不可怕,Bug一直都会有,主要是在解决问题中的思路和方法,不断总结积累,总会越来越好的!

赞的博客 597

一文搞懂 Flink 处理水印全过程

1. 正文 2. 总结 1.正文 前面,我们已经学过了 一文搞懂 Flink 处理 Barrier 全过程,今天我们一起来看一下 flink 是如何处理水印的,以 Flink 消费 kafka 为例 FlinkKafkaConsumer<String> consumer = new FlinkKafkaConsumer<String>(topics, new SimpleStringSchema(), properties); consumer.setStartFromL.

shengjk1的博客 1958

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

flink 不设置水印_一文搞懂 Flink 处理水印全过程

1.正文前面,我们已经学过了 一文搞懂 Flink 处理 Barrier 全过程,今天我们一起来看一下 flink 是如何处理水印的,以 Flink 消费 kafka 为例FlinkKafkaConsumer consumer = new FlinkKafkaConsumer(topics, new SimpleStringSchema(), properties);consumer.setSta...

weixin_39673972的博客 456

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

老板让阿粉学习 flink 中的 Watermark,现在他出教程了

1 前言 在时间 Time 那一篇中,介绍了三种时间概念 Event、Ingestin 和 Process, 其中还简单介绍了乱序 Event Time 事件和它的解决方案 Watermark 水位线 (看过多篇文章后,决定喊它水位线,因为窗口触发条件是 Watermark > Window_end_time,有点像水流到达水位线后溢出,当然喊它水印也是可以的,全看个人爱好咯~) 前文请翻 ...

Java极客技术 679

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Flink笔记-Watermark

一、两种watermark类型 1、Periodic(常用) 周期性(一定时间间隔或者到达一定记录数)生成watermark。 对应接口:AssignerWithPeriodicWatermarks 必须结合时间或者累计条数两个维度,否则在极端情况下会有很大的延时。 两个个抽象类: AscendingTimestampExtractor BoundedOutOfOrd...

ooeeerrtt的博客 348

Spark 3.5 与 Flink 1.18 时间机制详解:3 种 Watermark 策略与乱序数据处理实战

本文深度解析Spark 3.5与Flink 1.18的时间处理机制,重点对比三种Watermark策略(周期性、标点性、自定义)在乱序数据处理中的实战应用。通过代码示例展示两种引擎的核心差异,帮助开发者在实时计算场景中优化时间窗口计算、迟到数据处理及状态管理,为金融交易、用户行为分析等业务提供技术选型参考。

weixin_30527423的博客 703

【深入浅出flink】第13篇:从源码解读flink中Watermark的周期性和间断式生成方式

我们通常通过DataStream的assignTimestampsAndWatermarks方法引入Watermark,assignTimestampsAndWatermarks方法中要求传入的接口有两种,一种是AssignerWithPeriodicWatermarks(周期性生成Watermark的时间戳分配器),另一中是AssignerWithPunctuatedWatermarks(间断式生成Watermark的时间戳分配器),它们都是TimestampAssigner(时间戳分配器)接口的子接口。

雷恩Layne 2688

FlinkAPI开发之水位线(Watermark)

在Flink中,用来衡量事件时间进展的标记,就被称作“水位线”(Watermark)。具体实现上,水位线可以看作一条特殊的数据记录,它是插入到数据流中的一个标记点,主要内容就是一个时间戳,用来指示当前的事件时间。而它插入流中的位置,就应该是在某个数据到来之后;这样就可以从这个数据中提取时间戳,作为当前水位线的时间戳了。周期性生成器一般是通过onEvent()观察判断输入的事件,而在onPeriodicEmit()里发出水位线

Appreciate(欣赏) 1634

Flink学习24.1:事件时间处理和水印

在 Flink 的流式处理中,会涉及到时间的不同概念,如下图所示Event Time:是事件创建的时间。它通常由事件中的描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink 通过时间戳分配器访问事件时间戳。Ingestion Time:是数据进入 Flink 的时间。Time:是每一个执行基于时间操作的算子的本地系统时间,与机器相关,默认的时间属性就是 Processing Time。

hzp666的博客 851

Flink提取EventTime并生成Watermark几种常用的方式

设置eventTime的方式分两种情况: 升序数据提取时间戳 直接使用:.assignAscendingTimestamps(_.timestamp * 1000L) 乱序数据提取时间戳,有三种种构造方式(1.10版本只有前两种,flink版本1.11以后建议使用方式三) 方式一:AssignerWithPeriodicWatermarks 周期性的生成 watermark,默认周期是200ms,也可以通过setAutoWatermarkInterval设置周期时间 常用的实现类是:B

TRX的博客 2681

flink Watermark 总结

1. Watermark介绍 Watermark就是设定一个延迟时间,比如水位线设置2秒,当时间缀-2小于,窗口关闭时间时,窗口不关闭,进行接收数据,当时间缀-2等于关闭时间,窗口触发关闭。 2. Watermark分类 AssignerWithPeriodicWatermarks AssignerWithPunctuatedWatermarks 以上两个接口都继承自TimestampAssigner。 TimestampAssigner AssignerWithPeriodic

anita9999的博客 375
上一篇: linux ssh免密
下一篇: linux 修改文件打开数量限制
b078109
博客等级 码龄12年 6粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值