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

Flink的三种时间语义

        在流数据处理中,一个很重要也很常见的操作就是窗口计算。窗口计算与时间密不可分。

        窗口的计算在分布式流处理环境中,可能会面临如下问题:数据由上游发送到下游的过程中,可能是跨节点传输的,而网络传输存在延迟,数据到达下游节点的时间则有先有后,则会产生乱序数据问题,如8点59分59秒产生的数据可能比9点01分01秒产生的数据后到达下游节点,那么它究竟是属于8-9点的时间窗口,还是9-10点的时间窗口呢?这就首先需要我们明确Flink中的不同时间语义。

一、事件时间

        ”事件时间“语义是指数据产生的时间。数据一旦生成,这个时间就确定了,可以作为一个时间属性嵌入到数据中,就是这条数据记录的时间戳。那么在事件时间语义下,上面8点59分59秒产生的数据在9点01分01秒到达下游节点,还应当属于8-9点的时间窗口。

        通常来说,事件时间语义更符合业务计算逻辑,但是由于网络传输延迟问题,数据到达下游节点时存在乱序问题,因此要想计算8-9点的时间窗口数据,就需要等待所有8-9点生成的数据都到齐,事件时间语义以一定延迟为代价换取计算的准确性。

二、处理时间

        “处理时间"语义是指数据被真正处理的时刻,很显然,这里指的是在相应处理节点机器上的系统时间。以处理时间来衡量数据属于哪个时间窗口十分方便,如上面8点59分59秒产生的数据在9点01分01秒到达下游节点,那么它就属于9-10点的时间窗口,数据能够及时的被处理,不需要等待可能的延时数据。但是处理时间不符合业务逻辑,如要计算不同时段的pv、uv,那么按照业务逻辑,这条数据应当属于8-9点的时间窗口。

        处理时间语义适用于对实时性要求极高,而对数据计算的准确性要求不太高的场景。

三、摄取时间

        摄取时间是指数据进入flink数据流的时间,也就是被source算子读取的时间。 


http://www.kler.cn/a/459686.html

相关文章:

  • kernel32.dll动态链接库报错要怎解决?详细解析kernel32.dll文件缺失解决方案
  • 用python编写一个放烟花的小程序
  • 【项目开发】C#环境配置及VScode运行C#教程(学生管理系统)
  • 【时时三省】(C语言基础)常见的动态内存错误2
  • 苍穹外卖 项目记录 day01
  • Excel VBA 自动填充空白并合并相同值的解决方案
  • 在 Ubuntu 下通过 Docker 部署 Nginx 服务器
  • 《机器学习》从入门到实战——逻辑回归
  • Spring Boot日志处理
  • hadoop sql 执行log
  • ARM200~500部署
  • 第11关:博客系统之查询博客评论
  • 揭秘 Fluss 架构组件
  • 手撕算法-严刑拷打
  • 基础数据结构--二叉树
  • 搭建知识中台:大健康零售行业的数字化升级之路
  • Apollo 自动驾驶全景解析
  • keepalived详细笔记
  • PHP语言的软件开发工具
  • 金蝶V10中间件的使用
  • STM32 软件I2C读写
  • 用c++或c 做一个深度遍历的 棋谱树,我用来 做围棋棋谱的教学,要求节省内存、效率高,便于保存(棋谱)和拷贝棋谱
  • Unity 使用UGUI制作卷轴开启关闭效果
  • 【C#】元组
  • 【GO基础学习】gin的使用
  • ArcGIS教程(009):ArcGIS制作校园3D展示图