Flink / Scala 实战 - 19.ProcessFunction 删除 key 的上一个定时器 TimeTimer

Posted BIT_666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink / Scala 实战 - 19.ProcessFunction 删除 key 的上一个定时器 TimeTimer相关的知识,希望对你有一定的参考价值。

一.引言

ProcessFunction 原始执行状态为每个 key 注册一个较长时间 TimeTimer 并在这期间将所有对应 key 的数据都收集起来,到期完成触发。现在接到新的需求,要求判断数据类型,当特殊标识的数据到达后,需要将 TimeTimer 到期的时间提前。因此需要删掉当前 key 之前注册的老的 TimeTimer,下面铺下自己踩坑的完整过程。

二.情景复现

1.数据源

为了测试数据,我们自定义数据流,其中 SourceInfo 为 CaseClass,包含了 key、sendTime 与 isRealTime 三个字段,前两个常规字段,ProcessFunction 会根据先到的 SourceInfo 获取其 SendTime 并注册 TimeTimer,isRealTime 为新增需求字段,该字段默认 False,为 True 时代表提前 TimeTimer 的触发时间。

  case class SourceInfo(key: String, sendTime: Long, isRealTime: Boolean = false) 
    override def toString: String = 
      s"key: $key isRealTime: $isRealTime sendTime: $sendTime"
    
  

以上是关于Flink / Scala 实战 - 19.ProcessFunction 删除 key 的上一个定时器 TimeTimer的主要内容,如果未能解决你的问题,请参考以下文章

Flink / Scala 实战 - 19.ProcessFunction 删除 key 的上一个定时器 TimeTimer

新一代大数据计算引擎 Flink从入门到实战

Flink入门及实战(上+下)

Flink / Scala - 20.Scala API Extensions 扩展

01-flink-1.10.1开发flink代码需要的maven

Flink系列之:基于scala语言实现flink实时消费Kafka Topic中的数据