FLINK基础(145):DS事件时间 时间相关 API
Posted 秋华
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FLINK基础(145):DS事件时间 时间相关 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 的时间超过了定时器设置时间,它就会调用方法自己编写定时器的回调逻辑。
以上是关于FLINK基础(145):DS事件时间 时间相关 API的主要内容,如果未能解决你的问题,请参考以下文章