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

相关推荐
xbgRS8 小时前
springboot的自动装配
java·spring boot
guwentian13 小时前
Git Worktree 实战:用并行多 Agent 把开发提速 N 倍
大数据·git·elasticsearch·wroktree
嘻哈∠※15 小时前
0061基于 SpringBoot 的投稿与稿件处理系统设计与实现
java·spring boot·后端
白狐_79816 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander25816 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
码匠许师傅16 小时前
【C++ 面试真题】聊聊 C++ 的拷贝构造与拷贝赋值
java·c++·面试
2503_9317124816 小时前
OpenInsight领衔:企业AI数据分析平台(Data Agent/智能问数/智能数据报告)
大数据
朴马丁16 小时前
国际与国产PLM在精细化工赛道的布局:2026年主要厂商技术特色
大数据·运维·人工智能·流程行业plm·化工新材料
~央千澈~17 小时前
从“拟声”到“生成”:AI音效背后的技术原理·优雅草AI音乐·AI音乐技术研究
大数据·人工智能·ai·音频
Elastic 中国社区官方博客18 小时前
Elasticsearch:使用 AI Agent 来创建 workflow
大数据·运维·人工智能·elasticsearch·搜索引擎·自动化·全文检索