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

eventTime+watermarker+allowedLateness到底窗口关闭时间是什么? - 实践

结论:窗口的关闭需要带 watermarker 的时间我想使用 kafkaUI 界面发送 json 数据给 kafka,json 数据长这个样子:这个数据我是编写了一个代码生成的:编写一个 flink 读取 kafka 数据的代码这个代码中可以读取 kafka 数据,并且必须使用 evenetTime 时间语义,并且还需要有watermarker+allowedLateness开始测试:使用 kafkaUI 界面发送第一条数据:我使用时间戳转换器看一下是什么时候:https://www.beijing-time.org/shijianchuo/1764303530000 = 12:18:50 也就意味着 第一个区间是 [12:18:50,12:18:55)接着在这个区间造一些数据:

{"money":47,"orderId":"6ce94dcefaac4106bb7b66302bb9e785","timeStamp":1764303531000,"uid":0}
{"money":47,"orderId":"6ce94dcefaac4106bb7b66302bb9e785","timeStamp":1764303532000,"uid":0}

控制台不会有输出,因为没有触发。输入以下数据可以触发:12:18:58

{"money":47,"orderId":"6ce94dcefaac4106bb7b66302bb9e785","timeStamp":1764303538000,"uid":0}

控制台输出了数据:

2025-11-28 12:18:50->2025-11-28 12:18:55->0-->141

得到了一个结论: 水印时间 (12:18:58)>= 区间结束时间 就会触发该区间的计算 【2025-11-28 12:18:50->2025-11-28 12:18:55)此时这个 【2025-11-28 12:18:50->2025-11-28 12:18:55) 区间触发了,没有关闭接着在这个区间【2025-11-28 12:18:50->2025-11-28 12:18:55)继续放入数据:

{"money":47,"orderId":"6ce94dcefaac4106bb7b66302bb9e785","timeStamp":1764303533000,"uid":0}
{"money":47,"orderId":"6ce94dcefaac4106bb7b66302bb9e785","timeStamp":1764303534000,"uid":0}

我们在这个里面又放入了12:18:53 12:18:54 的数据,放入一条,计算一次,放入一条计算一次,为什么?触发条件不是当前的时间-3 ,而是 最大的那个时间 -3 ,以前放的最大的事件时间是12:18:58接着造一个 结束时间+10s 的数据:

{"money":47,"orderId":"6ce94dcefaac4106bb7b66302bb9e785","timeStamp":1764303545000,"uid":0}

此时触发了一个区间的运行 【2025-11-28 12:18:55->2025-11-28 12:19:00) ,我们不关系,而关系的是【2025-11-28 12:18:50->2025-11-28 12:18:55) 有没有关闭?按照以前的理解,事件时间>= 窗口的结束时间+ allowedLateness 就关闭该窗口,如何测试呢?

{"money":47,"orderId":"6ce94dcefaac4106bb7b66302bb9e785","timeStamp":1764303533000,"uid":0}

发现依然输出了结果,说明 添加了allowedLateness 之后,窗口的结束时间 不是 事件时间>= 窗口的结束时间+ allowedLateness那关闭时间到底是多少?事件时间 >= 窗口结束12:18:55 + watermarker(3s) + allowedLateness(10s)接着需要造一个数据:12:19:08 秒

{"money":47,"orderId":"6ce94dcefaac4106bb7b66302bb9e785","timeStamp":1764303548000,"uid":0}

发现没有任何的输出,接着测试 【2025-11-28 12:18:50->2025-11-28 12:18:55) 是否关闭:

{"money":47,"orderId":"6ce94dcefaac4106bb7b66302bb9e785","timeStamp":1764303533000,"uid":0}

http://www.jsqmd.com/news/266660/

相关文章:

  • MinerU镜像优势解析:预装full依赖一键启动推荐
  • 柚坛工具箱 NT 实战手册:如何高效解决 Android 开发痛点
  • 面向图像分类的自监督/对比学习辅助的知识蒸馏-类别对比蒸馏(Category Contrastive Distillation, CCD) - 详解
  • 喜马拉雅音频资源本地化终极指南:打造永不丢失的私人听书馆
  • WorkshopDL终极指南:3分钟学会免费下载Steam创意工坊模组
  • 如何快速掌握国家自然科学基金LaTeX模板:面向科研新手的完整指南
  • 跨平台部署TTS有多简单?Supertonic镜像一键启动教程
  • 如何将闲置电视盒子改造为专业Linux服务器:Armbian系统完整指南
  • 2026年靠谱商品房装修公司排行榜,新测评精选欧式风格商品房装修推荐品牌 - 工业品牌热点
  • AI工程学习路径:纸质与数字资源的最优配置方案
  • Qwen3-4B-Instruct-2507隐私保护实施方案
  • Lucy-Edit-Dev:文本指令轻松实现视频精准编辑
  • USB通信中HID请求处理流程系统学习
  • UI-TARS终极使用指南:零基础实现桌面自动化革命
  • Midscene.js自动化测试实战:5大核心技术原理深度解析
  • Qwen3-4B-Instruct-2507性能基准:吞吐量与延迟测试
  • N_m3u8DL-RE完全指南:从零开始掌握流媒体下载
  • Qwen2.5-0.5B公共安全:应急问答系统
  • 2026年EPS泡沫优质厂家推荐,看哪家产品性价比高? - 工业品牌热点
  • 终极图像差异检测工具odiff:快速发现像素级视觉差异
  • 3倍效率提升:智能投资平台如何重构量化研究流程
  • HY-MT1.5-1.8B模型微调:领域自适应训练全流程
  • 2026年专业的安全气囊精密钢管厂家联系方式 - 品牌宣传支持者
  • Qwen2.5-7B-Instruct技术揭秘:为什么编程能力提升显著?
  • Revit模型转换终极指南:5分钟掌握OBJ与GLTF双格式导出
  • 语义补全系统开发:BERT模型实战
  • BetterJoy完整指南:在PC上完美使用任天堂Switch控制器的终极方案
  • 技术管理的两难:编码能力在流失,管人能力未增长
  • 三步搞定抖音合集批量下载:高效保存所有视频内容的终极方案
  • 杰理之在windows7电脑上播放歌曲过程中会异常掉设备【篇】