1、waterMark概念

:取自所有到达数据时间戳的最大值-延迟时间,所以保持单调递增的

窗口内的数据是按照eventTime分桶的时间窗口数据

watermark 是每条数据上带了一个时间戳,其含义是:watermark之前的数据都到齐了,在这个之后不会收到小于或等于该时间戳的数据。

eventTime值为1501750584000(2017-08-03 08:56:24.000),watermark策略为偏移4秒,这条数据的watermark时间就是 1501750584000 - 4000 = 1501750580000(2017-08-03 08:56:20.000)。

这条数据的watermark时间是什么含义呢?即:timestamp小于2017-08-03 08:56:20.000的数据都已经到达了。

2、watermark案例:

3、watermark上下游传递

如果上下游有多个并行子任务的话,上游朝下游传递是广播,下游接收上游的watermark会保留分区watermark,下游自己的watermark会以所有分区最小的watermaker为准。

4、窗口时间确定

//窗口start的创建公式 timestamp - (timestamp - offset + windowSize) % windowSize,第一条数据是1547718199,窗口为[195-210),[210-225),[225-240)

5、实际案例:需求为输出最小温度和最新时间戳

窗口为[195-210),[210-225),[225-240)

输入数据为:15s一个窗口,-3s的watermark

sensor_1,1547718199,32.9
sensor_1,1547718209,30.7
sensor_1,1547718208,34.5
sensor_1,1547718211,34.5
sensor_1,1547718213,30.9
[195-210)在210的一分钟后关闭,此时输出结果:windowSteam> SensorReading(sensor_1,1547718208,30.7),最大时间戳螫208,不包含211和213
sensor_1,1547718212,28
sensor_1,1547718225,30
sensor_1,1547718228,34

[210-225)窗口,输出结果windowSteam> SensorReading(sensor_1,1547718212,28.0),最大时间戳螫212,不包含225

sensor_1,1547718213,23

虽然[210-225)窗口在225的一分钟后关闭,allowedLateness(Time.minutes(1))的作用会使输出如下,在之前的走之前reduce的逻辑,然后直接输出,迟到的数据每来一条增量更新输出一次

windowSteam> SensorReading(sensor_1,1547718213,23.0)

输入sensor_1,1547718288,21
的时候[210-225)窗口关闭了

再输入

sensor_1,1547718219,21

会把数据输出到lateStream流里面了,sideOutputLateData(lateTag)触发

lateStream> SensorReading(sensor_1,1547718219,21.0)

.sideOutputLateData(lateTag)什么时候触发:

waterMark相关相关推荐

  1. Apache Flink 漫谈系列(12) - Time Interval(Time-windowed) JOIN...

    说什么 JOIN 算子是数据处理的核心算子,前面我们在<Apache Flink 漫谈系列(09) - JOIN 算子>介绍了UnBounded的双流JOIN,在<Apache Fl ...

  2. 聊聊flink的consecutive windowed operations

    为什么80%的码农都做不了架构师?>>>    序 本文主要研究一下flink的consecutive windowed operations 实例 DataStream<In ...

  3. linux 的swap具体分析_Linux SWAP 深度解读

    概述 本文讨论的 swap基于Linux4.4内核代码 .Linux内存管理是一套非常复杂的系统,而swap只是其中一个很小的处理逻辑. 希望本文能让读者了解Linux对swap的使用大概是什么样子. ...

  4. 【flink】Flink 1.12.2 源码浅析 :Task数据输出

    1.概述 转载:Flink 1.12.2 源码浅析 :Task数据输出 Stream的计算模型采用的是PUSH模式, 上游主动向下游推送数据, 上下游之间采用生产者-消费者模式, 下游收到数据触发计算 ...

  5. 95-180-040-源码-Watermark-简介

    1.视界 2.概述 2.1 实际问题(乱序) 在介绍Watermark相关内容之前我们先抛出一个具体的问题,在实际的流式计算中数据到来的顺序对计算结果的正确性有至关重要的影响,比如:某数据源中的某些数 ...

  6. 【Linux】SWAP 深度解读(必须收藏)

    邹老师关于Linux研究的技术文章向来入木三分,如果本文您读起来感觉费解,那么可以先收藏,然后侧重了解这些内容: swap.swappiness及kswapd原理,swap分区优先级的妙用. 真可谓一 ...

  7. 1w字详解从破解某定设计网站谈前端明暗水印(推荐收藏)

    前言 最近在写公众号的时候,常常会自己做首图,并且慢慢地发现沉迷于制作首图,感觉扁平化的设计的真好好看.慢慢地萌生了一个做一个属于自己的首图生成器的想法. 制作呢,当然也不是拍拍脑袋就开始,在开始之前 ...

  8. Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文

    前言 之前也分享了不少自己的文章,但是对于 Flink 来说,还是有不少新入门的朋友,这里给大家分享点 Flink 相关的资料(国外数据 pdf 和流处理相关的 Paper),期望可以帮你更好的理解 ...

  9. Flink - 尚硅谷- 大数据高级 Flink 技术精讲 - 2

    七.Flink 时间语义与 Watermark 7.1 Flink 中的时间语义 7.2 设置 Event Time 7.3 水位线 - Watermark 7.3.1 基本概念 7.3.2 Wate ...

最新文章

  1. 【算法】差分与前缀和 算法详解+例题剖析
  2. Fedora下如何删除以前的老内核
  3. Java开发微信公众号(四)---微信服务器post消息体的接收及消息的处理
  4. AtCoder Beginner Contest 072
  5. 全球及中国造纸行业十四五产量调研与运营能力状况分析报告2022版
  6. zabbix-server 的安装-centos7
  7. .NET+PostgreSQL实践与避坑指南
  8. Android之INSTALL_FAILED_UPDATE_INCOMPATIBLE(pacakge:...do not match the previously installed version)
  9. java字符串 删除指定字符的那些事
  10. 表单PostGet两个长度限制问题的分析
  11. 使用find 命令执行命令 -exec
  12. amazeui学习笔记--css(常用组件1)--小徽章Badge
  13. 【Liunx】Linux vi/vim 教程
  14. template 的简单使用
  15. 疫情病毒全部“抹杀”?用数据模型来解读传播抑制的效果差异!
  16. SpringMVC运行原理
  17. 什么?TTL信号也能高速稳定传输100m+?是的,你没有听错,量产电路推荐!
  18. FXCG: 日内交易与波段交易有什么区别
  19. trie图:Computer Viruses in Planet Pandora
  20. suse linux zypper iso,SUSE Linux的zypper命令详解

热门文章

  1. 关于c#:如何续订过期的ClickOnce证书?
  2. 程序员去外包的后遗症是什么
  3. 湖北计算机专业不错的学校,计算机专业大学TOP10排名,湖北一所大学上榜,这个地方占了四所...
  4. Cilium 开源 Tetragon – 基于 eBPF 的安全可观测性 运行时增强
  5. 【c++中内存拷贝函数(C++ memcpy)详解】
  6. 如何正确理解开漏输出和推挽输出
  7. 面试中的老大难 - MySQL中的锁
  8. TCP 的那些事 | SACK
  9. MoveIT和KDL中进行机械臂位置和姿态插值
  10. vue设置scrollTop不起作用