前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

正文

在专栏前面我们已经介绍过
可以通过window窗口来统计每一段时间或者每多少条数据的一些数值统计。

请参考我的这篇博客——一篇文章搞懂 Flink 的 Window

但是也存在另外一个问题,就是如果数据有延迟该如何解决,例如一个窗口定义的是每隔五分钟统计一次,我们应该在上午九点至九点零五分这段时间统计一次数据的结果值,但是由于某一条数据由于网络延迟,数据产生时间是在九点零三分,数据到达我们的flink框架已经是在十点零三分了,这种问题怎么解决?

再例如:
原始日志如下:
日志自带时间

2020-10-10 10:00:01,134 INFO executor.Executor: Finished task in state 0.0

数据进入flink框架时间:
这条数据进入Flink的时间是2020-10-10 20:00:00,102
数据被window窗口处理时间:
到达window处理的时间为2020-10-10 20:00:01,100

Time 三兄弟是什么?

为了解决这个问题,flink在实时处理当中,对数据当中的时间规划为以下三个类型
针对stream数据中的时间,可以分为以下三种
Event Time:事件产生的时间,它通常由事件中的时间戳描述。
Ingestion time:事件进入Flink的时间
Processing Time:事件被处理时当前系统的时间

可以参考我的这篇博客——什么是事件时间和处理时间?

1、EventTime详解

  1. 事件生成时的时间,在进入Flink之前就已经存在,可以从event的字段中抽取。
  2. 必须指定watermarks(水位线)的生成方式。
  3. 优势:确定性,乱序、延时、或者数据重放等情况,都能给出正确的结果
  4. 弱点:处理无序事件时性能和延迟受到影响

2、IngestTime

  1. 事件进入flink的时间,即在source里获取的当前系统的时间,后续操作统一使用该时间。
  2. 不需要指定watermarks的生成方式(自动生成)
  3. 弱点:不能处理无序事件和延迟数据

3、ProcessingTime

  1. 执行操作的机器的当前系统时间(每个算子都不一样)
  2. 不需要流和机器之间的协调
  3. 优势:最佳的性能和最低的延迟
  4. 弱点:不确定性 ,容易受到各种因素影响(event产生的速度、到达flink的速度、在算子之间传输速度等),压根就不管顺序和延迟

4、三种时间的综合比较

性能: ProcessingTime> IngestTime> EventTime
延迟: ProcessingTime< IngestTime< EventTime
确定性: EventTime> IngestTime> ProcessingTime

5、如何设置time类型

在我们创建StreamExecutionEnvironment的时候可以设置time类型,不设置time类型,默认是processingTime,如果设置time类型为eventTime,那么必须要在我们的source之后明确指定Timestamp Assigner & Watermark Generator

// 设置时间特性
val environment: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
// 不设置Time 类型,默认是processingTime。
// 如果使用EventTime则需要在source之后明确指定Timestamp Assigner & Watermark Generator
environment.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime)

Flink 的 Time 三兄弟相关推荐

  1. 设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript

    设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript 简单工厂模式 定义一个接口,三个具体类.然后书写如下,通过选择,生产出相应的对象 // 定义Shape接口 interface Sh ...

  2. 【拔刀吧少年】之循环三兄弟for while until

    循环三兄弟 一.echo命令 – 输出字符串或提取Shell变量的值 1.格式 2.常用参数 3.常用的转义字符 二.循环语句 1.for循环结构 2.while循环语句结构(迭代) 3.until ...

  3. 孪生三兄弟 CycleGAN, DiscoGAN, DualGAN

    孪生三兄弟 CycleGAN, DiscoGAN, DualGAN 2017-05-11 11:43 GAN 提出两年多来,很多想法都被研究者们提出.探索并实践.直到最近近乎同一时期发布的三篇论文,C ...

  4. 5G三兄弟NB-IoT排老几?NB-IoT介绍

    5G 作为一个大家长,家里有三兄弟:LTE(授权频道).LTE-U(非授权频道).NB-IOT(授权频道).就像是最近爆火的揭露现实中国家庭的电视剧<都挺好>中,苏家的三兄弟一样.作为 5 ...

  5. 设计模式-创建型模式-工厂模式(工厂三兄弟)

    设计模式-创建型模式-工厂模式(工厂三兄弟) 工厂模式分为简单工厂,工厂方法,抽象工厂. 简单工厂模式 一个接口,三个具体类,一个工厂,通过选择,生产出对应的对象. package demo2;pub ...

  6. 【华为云技术分享】云图说|超赞!终于有人把云存储“三兄弟”讲清楚了!

    云硬盘EVS是为云服务器提供高可靠.高性能.规格丰富并且可弹性扩展的块存储服务. 对象存储服务OBS具备提供海量.安全.高可靠.低成本的数据存储能力,可供用户存储任意类型和大小的数据. 弹性文件服务S ...

  7. JAVA中用于处理字符串的 三兄弟

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...

  8. 人眼分辨 PPI_扒一扒,PPI、LPI、DPI分辨率三兄弟~

    今天我们来扒一扒这三个长得很像很像的分辨率三兄弟:PPI.DPI.LPI. 不急,沏一杯茶,咱慢慢侃~ 这三个后面的PI都是一个意思:per inch(每英寸). 所以这三个概念都是表明图像精细度的, ...

  9. 瑞格科技IPO被终止:曾拟募资5.6亿 江振翔三兄弟为实控人

    雷递网 雷建平 12月17日 浙江瑞格智能科技股份有限公司(简称:"瑞格科技")日前IPO被终止. 瑞格科技计划募资5.59亿元,其中,2.55亿元用于年产1000万套汽车配件技改 ...

  10. mt6592android7,0.3GHz究竟差多少 MT6592三兄弟实测解析

    如果说红米手机的出现打响了千元手机"战争"的第一炮,那么如今炙手可热的千元八核机型无疑可以看做是千元机之争的"第二弹",随着各个厂商推出千元八核机型,整个&qu ...

最新文章

  1. C++核心编程(三)
  2. windows 7 下安装 Android 设备驱动
  3. vue-socket.io跨域问题的解决方法
  4. Tomcat8.0之源代码初体验
  5. Spring MVC使用拦截器实现权限控制
  6. python set union_python – set.union()抱怨它在传入生成器时没有参数
  7. JavaFX 中的像素、分辨率与缩放比
  8. 2021盐城中考有计算机考试吗,2021盐城中考总分满分是多少?各科目分值设置
  9. Linux学习笔记020---CentOs7.3 搭建 Solr单机服务
  10. Mac安装Redis
  11. Strategy模式的一点思考
  12. 百科知识:VTP(思科)
  13. InnoDB Undo Log
  14. 是什么的简称_全国各地区车牌号简称,说说你们那的车牌是什么?
  15. c语言与或非异或符号怎么打,逻辑运算符的符号
  16. 12-ubuntu:010 Editor
  17. php短信接口开发(http协议)
  18. android 磁盘读写速度,手机微硬盘读取速度50MB/s eMMC技术浅析
  19. 【数学建模】主成因分析
  20. 微信h5互动小游戏制作心得

热门文章

  1. (十五)使用任务通知实现命令行解释器
  2. 大数据解决方案:Hadoop监控
  3. 计算机无法找到网络打印机,为何搜索不到局域网打印机_解决win7找不到网络打印机的问题...
  4. hiveql 没有left()right()函数,可用substr()替代
  5. 基于粒子群算法和遗传算法优化的高速列车横向悬挂模糊PID控制
  6. python爬取头条付费专栏视频_用Python编写爬取头条视频的代码
  7. 网络基础之路由器的应用原理
  8. poj2706 connect
  9. mongoDb一对多之springboot demo
  10. 【JSP笔记02】JSP注释、脚本、表达式、JSP三大指令、JSP七大动作的介绍及使用