Flink的多种时间概念介绍和应用场景

  • Flink里面时间分类

    • 事件时间EventTime(重点关注)

      • 事件发生的时间
      • 事件时间是每个单独事件在其产生进程上发生的时间,这个时间通常在记录进入 Flink 之前记录在对象中
      • 在事件时间中,时间值 取决于数据产生记录的时间,而不是任何Flink机器上的
    • 进入时间 IngestionTime

      • 事件到进入Flink
    • 处理时间ProcessingTime

      • 事件被flink处理的时间

      • 指正在执行相应操作的机器的系统时间

      • 是最简单的时间概念,不需要流和机器之间的协调,它提供最佳性能和最低延迟

      • 但是在分布式和异步环境中,处理时间有不确定性,存在延迟或乱序问题

  • 大家的疑惑

    • 事件时间已经能够解决所有的问题了,那为何还要用处理时间呢?
    • 处理时间由于不用考虑事件的延迟与乱序,所以处理数据的速度高效
    • 如果一些应用比较重视处理速度而非准确性,那么就可以使用处理时间,但结果具有不确定性
    • 事件时间有延迟,但是能够保证处理的结果具有准确性,并且可以处理延迟甚至无序的数据

    举个例子

  • 隔壁老王 做了一个电商平台买 "超短男装衣服",如果要统计10分钟内成交额,你认为是哪个时间比较好?

    • (EventTime) 下单支付时间是2022-11-11 01-01-01
    • (IngestionTime ) 进入Flink时间2022-11-11 01-03-01(网络拥堵、延迟)
    • (ProcessingTime)进入窗口时间2022-11-11 01-31-01(网络拥堵、延迟)

        显然,如果统计订单的实时性,那EventTime是相对合理的时间坐标,其它的时间类型都会因为各种各样的原因,造成时间延迟,数据统计的不准确性。

        但是,EventTime也无法坐到实时准确性,如果出现迟到数据,该如何处理,那就需要使用Flink的WaterMark机制。关于Watermark机制,明日分析讲解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值