>我使用应用函数来获取唯一计数。但我想在唯一数据数量发生变化时收集计数。
法典:
hashMap
.keyBy(x => x.hash)
.timeWindow(Time.minutes(15))
.apply(new DataWindow())
但是应用函数在时间窗口结束时触发,如何在没有滑动窗口的情况下更频繁地获取该值。
我建议使用ProcessFunction
而不是窗口。您将希望使用键分区状态来保存您决定用于跟踪唯一值的任何数据结构。可以使用事件时间计时器或处理时间计时器每 15 分钟清除一次状态,具体取决于适合应用程序的时间类型。
但是如果你想坚持窗口化,你可以实现一个 自定义Trigger
.在这种情况下,您需要将状态保持在触发器上下文中可用的分区状态。另请参阅有关窗口和触发器的详细信息。