Flink 水位线

2023-11-04

水位线是什么

窗口 有了,但是要知道我们面对的是实时数据,而这些数据随时会出现延迟的情况,从几秒到几小时都有可能。如果要忽略这些数据,那么显然对于结果的计算是不准确的,可是要等待这些延迟数据的话, 那岂不是等同于批处理了,我们等不了那么久的。这个时候水位线恰好就是来描述和解决这个问题的。它指定一个时间 T,表示时间 T 之前的数据已经全部到达,后续再迟到的数据会被直接丢弃。

水位线用在哪里

显然,使用处理时间来处理事件不会有延迟,因此也不需要水位线。所以水位线只出现在事件时间窗口,因而也可以将水位线看成是事件时间的进度条。通常,当水位线通过窗口的末尾时,会触发窗口的计算操作。

在 Flink 中如何产生水位线

在 data source 中发射水位线

即在 data source 函数中,使用 SourceContext 的 emitWatermark 方法来发射一个水位线 T。

使用水位线生成器

  1. 按照固定周期生成
    这种情况下,Flink 会定时(可以自定义)获取水位线,这里水位线的具体方法由用户实现。
  2. 从特定元素生成
    在数据流中有某种中止信号(如-1、EOF)的时候,特别有用。此外需要注意的是由于这种获取水位线的操作会作用于每一个元素,所以可能会带来性能影响。

并发中的水位线

关于水位线的使用,有两点需要知道:

  1. 水位线是单调递减的,也就是说不允许后出现的水位线比之前的小。
  2. 当有操作依赖于多个流或者并发集合时,该操作会依赖于之前的所有水位线中最小的那个,也就是说该操作可能会等到之前所有的操作的水位线都通过了窗口的末尾,才会触发。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flink 水位线 的相关文章

随机推荐

  • new和delete的底层原理以及模板

    本文主要内容 new和delete的底层原理 什么是模板 模板怎么使用 模板可以声明定义在两个文件里面吗 new和delete的底层原理 前面我们谈了new和delete的使用 以及和C语言里面malloc和free的差别 但是 new和d
  • 密码学理论09:数论和密码学困难问题

    整数模N 符号 Z N Z gt 0 gcd a N 对于 a N Z 令 gcd a N 为最大的 d Z gt 0 使得 d a 和 d N ZN ZN N 除法 余数 模数 令a为整数且令N为正整数 那么存在唯一的整数 q r 其中
  • 计算机丢失disrupt,disrupt造句

    1 In mice the pathogen Citrobacter rodentium can disrupt this layer and cause inflammation and diarrhea 2 Women interrup
  • 指针定义(一级指针和二级指针)以及内存四区

    1 一级指针 1 定义 类型 指针变量名 变量 Int p a 地址 地址是内存的位置编号 是常量不可以修改 指针 一般指指针变量 用来存放地址的 是可以被修改的 2 二级指针 指向一级指针 保存的是一级指针的地址 Int p x int
  • 深搜(dfs)和广搜(bfs)

    深搜 dfs 和广搜 bfs 广搜可以用来解决最小路径问题和连通性问题 深搜可以解决连通性问题 实现方式 深搜用函数递归实现 广搜用队列实现 问题 输入地图判断连通性和最小路径 每次只能走上下左右 S为起点 T为终点 为障碍物 可以走 如以
  • Dart 2.18 正式发布

    互操作性增强 平台特定的网络组件 优化类型推断 以及空安全语言里程碑的近期更新 文 Michael Thomsen Google Flutter Dart 产品经理 Dart 2 18 稳定版也随着 Flutter 3 3 稳定版一起发布
  • 智能车制作——速度环PID

    做了智能车写这个做个记录 各位大佬勿喷 PID控制器 PID 控制器 比例 积分 微分控制器 是一种通过控制系统的偏差来调整输入信号的线性反馈控制算法 通俗的说 它可以给出使执行器 电机 快速准确到达目标的 指导方案 反馈 反馈是指将系统输
  • 基于深度学习和自闭症脑成像数据库(ABIDE)识别自闭症谱系障碍

    ASD是一种以大脑为基础的疾病 其特征是社会缺陷和重复行为 根据美国疾病控制中心最近的数据 美国68名儿童中就可能有1名患有自闭症 本研究的目的是基于深度学习算法从大型脑成像数据集中识别自闭症谱系障碍 ASD 患者 本文调查了一个ASD患者
  • Java代码之JDBC实现数据库之间定时的表格传输(由一个库读取到另一个库)实例

    本代码主要是JDBC和Java定时器 注释很详细 希望对大家有用 有什么不明白的可以在评论处留言 共同探讨 package first import java sql Connection import java sql DriverMan
  • R语言深度学习:强化学习入门

    专栏内含有很多案例供参考 目录 1 强化学习基础 2 强化学习的一个简单例子 玩游戏 结论 在今天的博客中 我们将一起探索强化学习 Reinforcement Learning 的世界 强化学习是深度学习的一个重要领域 它让机器通过与环境的
  • 多层Unity3D物体模型穿透问题处理

    本文针对在一个界面中展示多层3D物体时遇到的模型穿透问题提出一些解决方案 如图 当我们想要在同一个界面中展示两层或以上3D物体时 有时会因为第一层物体材质上的 shader 渲染深度被破坏或其它原因导致第一层的物体穿透到第二层界面上来了 在
  • FTP-----局域网内部远程桌面

    此文包含详细的图文教程 有疑问评论区留言 博主第一时间解决 目录 一 被远程桌面的电脑 1 开启远程权限 2 添加账户 有本地账户跳过这步 3 帐号隶属于 远程桌面 4 帐号隶属于 本地用户组 二 本地电脑连接远程桌面 前提条件 1 两台电
  • 蚁剑jsp一句话木马

    参考链接 https github com yzddmr6 JspForAntSword 密码为 passwd
  • 【深度学习图像识别课程】keras实现CNN系列:(5)应用数据增强进行CIFAR10分类

    一 图像增强简介 如何保证图像的标度不变性 大小 平移不变性 位置 旋转不变性 角度 最大池化层 保证平移不变性 增强 训练集扩展 对训练图片进行随机旋转或者平移 保证平移不变性 旋转不变性 避免过拟合 keras文档 https kera
  • spark集群8080端口页面只显示master的情况

    电脑配置是一台物理机作为master 一台物理机作为slave 在master启动运行后 使用jps命令分别查看两台机器的运行状况 master与slave均运行正常 但是进入master 8080的web控制端查看运行状态时候 发现只有m
  • 写一个python函数 用cuda加速

    好的 下面是一个用 CUDA 加速的 Python 函数的示例 import numpy as np import cupy as cp def accelerate with cuda x y 将 numpy 数组转换为 cupy 数组
  • 【视觉slam十四讲笔记】Sophus库的使用

    Sophus库的使用 include
  • Day03 Python之 可迭代对象Iterable和迭代器Iterator、迭代器协议

    一 什么是可迭代对象 iterable 1 可迭代对象 iterable 可以通过for in 这类语句遍历读取数据的对象 如 列表 字符串 元组 字典 集合 2 for循环工作原理 在内部对可迭代对象调用iter 方法 获取到迭代器对象
  • 02_ue4界面介绍

    1 菜单栏 1 文件 加载保存项目和关卡等 2 编辑 项目设置 标准的复制和粘贴操作 3 窗口 打开视图和其他面板 如果不小心关了窗口 可以在里面找 4 帮助 获得在线文档等帮助 2 工具栏 快速访问常用工具 1 保存当前关卡 2 对当前关
  • Flink 水位线

    水位线是什么 窗口 有了 但是要知道我们面对的是实时数据 而这些数据随时会出现延迟的情况 从几秒到几小时都有可能 如果要忽略这些数据 那么显然对于结果的计算是不准确的 可是要等待这些延迟数据的话 那岂不是等同于批处理了 我们等不了那么久的