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会忽略掉,这就没有你想继续往下问的水位线回退所引发的一系列问题了

相关推荐
计算机源码社2 分钟前
27届计算机毕设源码|基于Python的黄金价格特征分布与周期聚类可视化研究 基于大数据技术的黄金价格历史演变规律与波动特征研究
大数据·数据挖掘·数据分析
mmm.c5 分钟前
Redis 两级缓存 + Pub/Sub 广播:一次为抗高并发做的缓存改造
java
yexianglunbai6 分钟前
中间件(Middleware)详解:概念、作用与实战
java·开发语言·中间件
叶总没有会7 分钟前
OpenFeign
java·开发语言·springcloud·openfeign
小七在进步8 分钟前
类和对象(四)
java·javascript·ajax
白帽攻防录11 分钟前
SRC 挖洞:Apache Tomcat 加密拦截器绕过深度复盘,CVE-2026-34486 fail-open 一行代码怎么打穿集群通信
java·网络安全·tomcat·apache
ACP广源盛1392462567312 分钟前
国产 4K 视频处理器 GSV9001S@ACP,轻量化端侧 AI 可视化低成本方案评估
大数据·硬件架构·硬件工程·国产芯片
后端LV15 分钟前
三级缓存的两个失效盲区,我用 binlog 和消费组广播补上了
java·架构
写了20年代码的老程序员16 分钟前
想让 AI 改 Bug 快准狠?先给日志加个业务代码坐标
java·后端·apache log4j
SL_staff19 分钟前
JVS-Rules vs Drools:金融风控团队为何转向业务可编辑的决策平台
java·spring cloud·github