flink生成水位线记录方式--周期性水位线生成器

背景

在flink基于事件的时间处理中,水位线记录的生成是一个很重要的环节,本文就来记录下几种水位线记录的生成方式的其中一种:周期性水位线生成器

周期性水位线生成器

1.1 BoundedOutOfOrdernessTimeStampExtractor 他会接收一个表示最大延迟的参数,比如1分钟,意味着如果到达的元素的事件时间和之前到达的元素的最大时间戳小于1分钟,那么还可以对这个元素进行正常的处理,例如归入正常的窗口中等待处理等,如果超过1分钟,那么这个元素本应参与的计算已经完成并发出结果,这个元素现在就是属于迟到元素。这个生成器的代码和下面代码类似:

java 复制代码
public class SelfAssigner extends AssignerWithPeriodicWaterMark{
public static long delay = 60000; //1分钟
public long maxTs=0;//已经到达的元素的最大时间戳

public long extractTimeStamp(Event event){
maxTs = Max(maxTs, event.getTimeStamp);
return event.getTimeStamp();
}

public long getCurrentWaterMark(){
	return maxTs - delay;//具有1分钟容忍度的水位线
}
}

1.2 直接使用assignAsendingTimeStamp分配器生成水位线,它适用于输入的事件的时间戳是单调递增的,他会使用当前的事件的时间戳生成水位线记录

注意事项

你是否有个疑问,如果我一个自定义的水位线生成器发出一个比之前曾经发出的水位线记录的时间戳更小的水位线会有什么影响?答案是 flink会忽略掉,这就没有你想继续往下问的水位线回退所引发的一系列问题了

相关推荐
Yang-Never2 分钟前
Android 内存泄漏 -> ViewModel持有Activity/Fragment导致的内存泄漏
android·java·开发语言·kotlin·android studio
fanruitian3 分钟前
SpringBoot 调用springai ollama
java·spring boot·后端
ShenLiang20254 分钟前
识别SQL里的列名
大数据·人工智能·python
蓝影铁哥5 分钟前
浅谈5款Java微服务开发框架
java·linux·运维·开发语言·数据库·微服务·架构
百胜软件@百胜软件6 分钟前
百胜软件入选“2025业务中台企业排行TOP30”,持续赋能零售企业数字化变革
大数据·零售
曜华激光12 分钟前
太阳能电池串质量检测仪自动生成报告——高效赋能光伏质检闭环
大数据·人工智能
sheji341616 分钟前
【开题答辩全过程】以 小说阅读平台的设计为例,包含答辩的问题和答案
java
better_liang22 分钟前
每日Java面试场景题知识点之-JVM
java·jvm·面试题·内存管理·性能调优·垃圾回收
大力财经24 分钟前
贾跃亭总结2025:独在异乡为异客,万里归心向北京
大数据·人工智能·物联网
IT 行者24 分钟前
Spring Authorization Server 迁移至 Spring Security 7.0:变革与展望
java·数据库·spring