Apache flink 一个窗口上有两种触发器?

Apache flink 一个窗口上有两种触发器?,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我需要你的建议,真的 在我的任务中,我需要通过两种类型的聚合来聚合事件。 第一种类型是onCount,第二种类型是onTime 若事件用于onCount聚合,则它具有字段number—事件数和totalCount—聚合前应累积的事件数 若事件用于实时聚合—它有字段时间—那个么它就是我们应该获取所有累积事件并开始聚合的日期 我可以按类型、启动窗口和设置触发器对事件进行分组: stream .keyBy(e => (e.clientSystemId, e.onMode)) .window(Gl

我需要你的建议,真的 在我的任务中,我需要通过两种类型的聚合来聚合事件。 第一种类型是onCount,第二种类型是onTime

若事件用于onCount聚合,则它具有字段number—事件数和totalCount—聚合前应累积的事件数

若事件用于实时聚合—它有字段时间—那个么它就是我们应该获取所有累积事件并开始聚合的日期

我可以按类型、启动窗口和设置触发器对事件进行分组:

stream
.keyBy(e => (e.clientSystemId, e.onMode))
.window(GlobalWindows.create())
.trigger(new WindowAggregationTrigger())
但在触发器中,我需要状态-总计数或时间。 在最佳解决方案中——我需要两个不同的触发器——第一个是关于计数,第二个是关于时间聚合

我的问题是——解决这个问题有多漂亮? 当我需要两个不同逻辑的触发器时-第一个关于计数,第二个关于时间触发器

我不要求为我解决这个问题,我要求的是建议


我们是在Apache Flink 1.4上开发的。

不可能在同一个窗口操作符中应用两个不同的触发器,但是您可以实现一个触发器来区分onCount和onTime情况

但是,我建议使用split或side输出将流拆分为两个流,在拆分的流上应用具有不同触发器的窗口操作符,然后在必要时将流合并在一起