能否在Flink中将and count和process time Trigger结合起来?
Can we combine both and count and process time Trigger in Flink?
我想让 Windows 在计数达到 100 后或每 5 秒完成翻滚处理时间?也就是说当元素达到100时,触发Windows计算,但是如果元素没有达到100,但时间过去了5秒,也会触发Windows计算,就像以下两个触发器的组合:
.countWindow(100)
.window(TumblingProcessingTimeWindows.of(Time.seconds(5)))
目前的 Flink API。
没有超级简单的方法可以做到这一点
您的用例需要状态(用于计数)和计时器的组合。您可以使用自定义 Trigger, or by using a ProcessFunction.
通过 windows 完成此操作
对于 windows 加上自定义触发器的方法,查看 ProcessingTimeTrigger 和 CountTrigger 的 implementations 会有所帮助,因为您基本上想要混合两者。
ProcessFunction 是一个较低级别的构建块,它将托管状态与计时器结合在一起,这正是您所需要的,所以这可能更容易,特别是如果您已经知道如何使用 Flink's managed state。
顺便说一句,online Flink training 包含学习如何使用 ProcessFunctions 的材料。
我想让 Windows 在计数达到 100 后或每 5 秒完成翻滚处理时间?也就是说当元素达到100时,触发Windows计算,但是如果元素没有达到100,但时间过去了5秒,也会触发Windows计算,就像以下两个触发器的组合:
.countWindow(100)
.window(TumblingProcessingTimeWindows.of(Time.seconds(5)))
目前的 Flink API。
没有超级简单的方法可以做到这一点您的用例需要状态(用于计数)和计时器的组合。您可以使用自定义 Trigger, or by using a ProcessFunction.
通过 windows 完成此操作对于 windows 加上自定义触发器的方法,查看 ProcessingTimeTrigger 和 CountTrigger 的 implementations 会有所帮助,因为您基本上想要混合两者。
ProcessFunction 是一个较低级别的构建块,它将托管状态与计时器结合在一起,这正是您所需要的,所以这可能更容易,特别是如果您已经知道如何使用 Flink's managed state。
顺便说一句,online Flink training 包含学习如何使用 ProcessFunctions 的材料。