阅读 81

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

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 的时间超过了定时器设置时间,它就会调用方法自己编写定时器的回调逻辑。 

 

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

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐