开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink 在编写逻辑时会用到的与时间相关的 API,在应用逻辑里通过接口支持可以完成哪几件事?

Flink 在编写逻辑时会用到的与时间相关的 API,在应用逻辑里通过接口支持可以完成哪几件事?

展开
收起
云上静思 2021-11-15 18:57:19 714 0
1 条回答
写回答
取消 提交回答
  • 在应用逻辑里通过接口支持可以完成3件事:

    第一,获取记录的时间。Event Time 可以调 context.getTimestamp,或在SQL 算子内从数据字段中把对应的时间给提取出来。Processing Time 可以直接调currentProcessingTime 完成调取,它的内部是直接调用了获取系统时间的静态方法来返回的值。

    第二,获取 Watermark。其实只有在 Event Time 里才有 Watermark 的概念,而 Processing Time 里是没有的。但在 Processing Time 中非要把某个东西当成Watermark,其实就是数据时间本身。也就是说第一次调用 timerService.currentProcessingTime 方法之后获取的值。这个值既是当前记录的这个时间,也是当前的Watermark 值,因为时间总是往前流动的,第一次调用了这个值后,第二次调用时这个值肯定不会再比第一次值还小。

    第三,注册定时器。定时器的作用是清理。比如需要对一个 cache 在未来某个时间进行清理工作。既然清理工作应该发生在未来的某个时间点,那么可以调用timerServicerEventTimeTimer 或 ProcessingTimeTimer 方法注册定时器,再在整个方法里添加一个对定时器回调的处理逻辑。当对应的 Event Time 或者Processing Time 的时间超过了定时器设置时间,它就会调用方法自己编写定时器的回调逻辑。

    资料来源:《Apache Flink 必知必会》,下载链接:https://developer.aliyun.com/topic/download?id=1189 

    2021-11-16 15:11:53
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Spring Boot2.0实战Redis分布式缓存 立即下载
    CUDA MATH API 立即下载
    API PLAYBOOK 立即下载