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

相关推荐
单词记忆方法研究5 分钟前
探索上海背单词小程序品牌:高效学习工具的优化之路
大数据·学习·小程序
2601_957879335 分钟前
没有视频团队的跨境电商,如何利用AI建立短视频内容生产体系?
大数据·人工智能
XWalnut7 分钟前
LeetCode刷题 day37
java·数据结构·算法·leetcode
huaweichenai9 分钟前
使用maven搭建sprint-boot
java·maven·sprint
zerozrc015 分钟前
Java 方法调用的底层原理
java·后端
星火102423 分钟前
【LangChain4j系列01】LangChain4j 快速入门与核心概念
java·人工智能
扶苏100225 分钟前
同一个 Git 项目整出两份,切分支互不影响?两种方案实测
大数据·git·elasticsearch
zhongerzixunshi28 分钟前
健全创新激励机制,激活企业发展内生动力
大数据·人工智能
SemiTris29 分钟前
从Controller到Tomcat底层请求链路全解析
java·tomcat
月光有害32 分钟前
理解 Spring 依赖注入:从构造器注入到集合与条件 Bean
java·后端·spring