在flink中的时间窗结束之前收集数据

时间:2017-11-03 17:38:00

标签: apache-flink flink-streaming

我使用apply函数来获取唯一计数。但我希望在唯一数据的数量发生变化时收集计数。

代码:

hashMap       
.keyBy(x => x.hash)       
.timeWindow(Time.minutes(15))
.apply(new DataWindow())

但是当时间窗结束时触发应用功能,如何在没有滑动窗口的情况下更频繁地获取值。

1 个答案:

答案 0 :(得分:0)

我建议使用ProcessFunction而不是窗口。您将需要使用密钥分区state来保存您决定用于跟踪唯一值的任何数据结构。您可以使用事件时间计时器或处理时间计时器每15分钟清除一次状态,具体取决于您的应用程序适合的时间类型。

但是如果你想坚持使用窗口,你可以实现自定义Trigger。在这种情况下,您需要将状态保留在TriggerContext上的partitioned state中。另请参阅more info about windows and triggers