首页 > Windows开发 > 详细

FLINK基础(145):DS事件时间(4) 时间相关 API

时间:2021-09-02 07:27:13      阅读:19      评论:0      收藏:0      [点我收藏+]
Flink 在编写逻辑时会用到的与时间相关的API,下图总结了 Event Time 和Processing Time 相对应的 API。

技术分享图片

在应用逻辑里通过接口支持可以完成三件事:
  第一,获取记录的时间。Event Time 可以调 context.getTimestamp,或在SQL 算子内从数据字段中把对应的时间给提取出来。Processing Time 可以直接调currentProcessingTime 完成调取,它的内部是直接调用了获取系统时间的静态方法来返回的值。
  第二,获取 Watermark。其实只有在 Event Time 里才有 Watermark 的概念,而 Processing Time 里是没有的。但在 Processing Time 中非要把某个东西当成Watermark,其实就是数据时间本身。也就是说第一次调用 timerService.currentProcessingTime 方法之后获取的值。这个值既是当前记录的这个时间,也是当前的Watermark 值,因为时间总是往前流动的,第一次调用了这个值后,第二次调用时这个值肯定不会再比第一次值还小
  第三,注册定时器。定时器的作用是清理。比如需要对一个 cache 在未来某个时间进行清理工作。既然清理工作应该发生在未来的某个时间点,那么可以调用timerServicerEventTimeTimer 或 ProcessingTimeTimer 方法注册定时器,再在整个方法里添加一个对定时器回调的处理逻辑。当对应的 Ev e n t Ti m e 或者Processing Time 的时间超过了定时器设置时间,它就会调用方法自己编写定时器的回调逻辑。 

 

FLINK基础(145):DS事件时间(4) 时间相关 API

原文:https://www.cnblogs.com/qiu-hua/p/15208413.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!