flinksql获取系统当前时间搓_Flink架构(三)- 事件-时间(Event-Time)处理

3.事件-时间(Event-Time)处理

在“时间语义”中,我们强调了在流处理应用中时间语义的重要性,并解释了处理时间与事件时间的不同点。处理时间较好理解,因为它基于本地机器的时间,它产生的是有点任意的、不一致的、以及无法复现的结果。而事件时间的语义产生的是可复现的、一致性的结果,它对于很多流处理场景是一个硬性的要求。然而,相对于处理时间语义,事件时间语义应用需要额外的配置,并且引入了更多的系统内部构件。

Flink为常见的event-time处理操作提供了直观、并易于使用的原型。同时也提供了清晰的APIs,用于为用户自定义的operators实现更高级的event-time应用。有一个对Flink内部时间处理的理解,对与这类高级应用的开发与理解是很有帮助的,有时候也是必须的。前一章介绍过Flink依赖的两个用于提供事件时间语义的概念:record时间戳和水印。下面我们会介绍Flink内部是如何实现并处理时间戳与水印,从而为流应用提供事件-时间语义。

时间戳

所有由Flink事件-时间流应用生成的条目都必须伴随着一个时间戳。时间戳将一个条目与一个特定的时间点关联起来,一般这个时间点表示的是这条record发生的时间。不过application可以随意选择时间戳的含义,只要流中条目的时间戳是随着流的前进而递增即可。

当Flink以事件-时间的模式处理流数据时,它基于条目的时间戳来评估(evaluate)基于时间(time-based)的operators。例如,一个time-window operator根据条目的时间戳,将它们分派给不同的windows。Flink将时间戳编码为16-byte,Long类型的值,并将它们以元数据(metadata)的方式附加到流记录(records)中。它内置的operators将这个Long型的值解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值