我想让窗口完成后,计数达到100或每5秒为翻滚过程的时间?也就是说当元素达到100时,触发windows计算,但是如果元素没有达到100,但是经过5秒的时间,它也会触发windows计算,就像下面两个触发器的组合一样:.countwindow(100).window(tumblingprocessingtimewindows.of(time.seconds(5)))
d5vmydt91#
使用当前的flinkapi没有超简单的方法可以做到这一点。您的用例需要状态(用于计数)和计时器的组合。您可以通过windows使用自定义触发器或processfunction来实现这一点。对于使用windows加上自定义触发器的方法,查看processingtimetrigger和counttrigger的实现会很有帮助,因为您基本上希望将两者混合。processfunction是一个较低级别的构建块,它将托管状态与计时器结合在一起,这正是您所需要的,因此这可能更容易,特别是如果您已经知道如何使用flink的托管状态的话。顺便说一句,flink在线培训包括学习如何使用processfunctions的材料。
1条答案
按热度按时间d5vmydt91#
使用当前的flinkapi没有超简单的方法可以做到这一点。
您的用例需要状态(用于计数)和计时器的组合。您可以通过windows使用自定义触发器或processfunction来实现这一点。
对于使用windows加上自定义触发器的方法,查看processingtimetrigger和counttrigger的实现会很有帮助,因为您基本上希望将两者混合。
processfunction是一个较低级别的构建块,它将托管状态与计时器结合在一起,这正是您所需要的,因此这可能更容易,特别是如果您已经知道如何使用flink的托管状态的话。
顺便说一句,flink在线培训包括学习如何使用processfunctions的材料。