当前位置: 首页 > news >正文

flink生成水位线记录方式--基于特殊记录的水位线生成器

背景

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

基于特殊记录的水位线生成器

我们发送的事件中,如果带有某条特殊记录的元素代表了某种进度的标识的话,我们可以基于这条特殊的记录生成水位线,这样我们当收到这条特殊记录时就知道这个记录的时间戳之前的记录都已经全部收到了,也就是可以基于这条特殊记录发出水位线了。代码如下所示:

public class SpecialRecordWaterMark extends AssignerWithPunctuateWaterMarks{public long extractTimeStamp(event Event, previousTs long){
// 抽取记录的时间戳return event.getTimeStamp();
}public WaterMark checkAndGetNextWaterMark(event Event, extractedTs long){
if(event is '特殊记录'){//发出水位线,这里的delay可以为0,也可以为比如一分钟等数值return new WaterMark(extractedTs - delay)
}else{
//不发出水位线记录
}
}
}

总结

基于特殊记录的水位线生成器的最大问题时,flink是并行处理输入记录的,你如何能确保特殊记录是比正常记录后处理的?我能想到的场景是比如kafka队列,所有你要处理的记录都在某个分区中有序,特殊记录也是分区有序的情况下才能使用这种方法生成水位线

http://www.lryc.cn/news/184789.html

相关文章:

  • Arcgis日常天坑问题(1)——将Revit模型转为slpk数据卡住不前
  • JavaWeb:上传文件
  • STM32 大小端与字节对齐使用记录
  • RabbitMQ中basic**方法汇总与参数解释
  • linux之/etc/default/useradd文件
  • 3.primitive主数据类型和引用 认识变量
  • 【群智能算法改进】一种改进的光学显微镜算法 IOMA算法[1]【Matlab代码#60】
  • 第三课-软件升级-Stable Diffusion教程
  • 【C++】设计模式之——建造者
  • 【C++】基础语句(学习笔记)
  • 大厂秋招真题【DP】米哈游20230924秋招T2-米小游与魔法少女-奇运
  • LVS+Keepalived 高可用集群负载均衡
  • Qt QList类和QLinkedList类 详解
  • Mac安装GYM遇到的一些坑
  • 【高级rabbitmq】
  • 数百个下载能够传播 Rootkit 的恶意 NPM 软件包
  • SpringBoot的error用全局异常去处理
  • MyBatisPlus(十一)包含查询:in
  • Linux命令定位与查找:which、whereis和find的用法详解
  • LeetCode 面试题 17.10. Find Majority Element LCCI【摩尔投票法】简单
  • 多校联测11 模板题
  • Linux SSH连接远程服务器(免密登录、scp和sftp传输文件)
  • 从0开始python学习-30.selenium frame子页面切换
  • asp.net core 远程调试
  • Java spring boot 一次调用多个请求
  • DRM全解析 —— CRTC详解(4)
  • 六个为Rust构建的IDE
  • 25 Python的collections模块
  • JEPG Encoder IP verilog设计及实现
  • yolov5 web端部署进行图片和视频检测