我们能在flink中同时计算和处理时间触发器吗?

63lcw9qa  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(408)

我想让窗口完成后,计数达到100或每5秒为翻滚过程的时间?也就是说当元素达到100时,触发windows计算,但是如果元素没有达到100,但是经过5秒的时间,它也会触发windows计算,就像下面两个触发器的组合一样:
.countwindow(100)
.window(tumblingprocessingtimewindows.of(time.seconds(5)))

d5vmydt9

d5vmydt91#

使用当前的flinkapi没有超简单的方法可以做到这一点。
您的用例需要状态(用于计数)和计时器的组合。您可以通过windows使用自定义触发器或processfunction来实现这一点。
对于使用windows加上自定义触发器的方法,查看processingtimetrigger和counttrigger的实现会很有帮助,因为您基本上希望将两者混合。
processfunction是一个较低级别的构建块,它将托管状态与计时器结合在一起,这正是您所需要的,因此这可能更容易,特别是如果您已经知道如何使用flink的托管状态的话。
顺便说一句,flink在线培训包括学习如何使用processfunctions的材料。

相关问题