数据流触发器 AfterProcessingTime.pastFirstElementInPane() 如何工作?
How does dataflow trigger AfterProcessingTime.pastFirstElementInPane() work?
在 Dataflow 流媒体世界中。
我的理解是:
Window.into(FixedWindows.of(Duration.standardHours(1)))
.triggering(AfterProcessingTime.pastFirstElementInPane()
.plusDelayOf(Duration.standardMinutes(15))
是固定的window一个小时,触发器在看到第一个元素后等待或批处理元素。
但是当我说:
Window.into(FixedWindows.of(Duration.standardHours(1)))
.triggering(AfterProcessingTime.pastFirstElementInPane()
它是从第一次看到第一个元素时每次都触发还是隐式地批处理元素?因为触发每个元素会使系统过载。
对于这两个触发器,window 将被触发一次,所有剩余的元素将被丢弃。可以使用Repeatedly.forever(...)
多次触发
关于您的具体问题,如果元素大约同时到达,则会发生少量批处理。
假设你的意思是下面的,那么是的,第二个会更频繁地触发,并且可能会使系统过载。
Repeatedly.forever(AfterProcessingTime.pastFirstElementInPane()
.plusDelayOf(Duration.standardMinutes(15)))
对比
Repeatedly.forever(AfterProcessingTime.pastFirstElementInPane())
在 Dataflow 流媒体世界中。
我的理解是:
Window.into(FixedWindows.of(Duration.standardHours(1)))
.triggering(AfterProcessingTime.pastFirstElementInPane()
.plusDelayOf(Duration.standardMinutes(15))
是固定的window一个小时,触发器在看到第一个元素后等待或批处理元素。
但是当我说:
Window.into(FixedWindows.of(Duration.standardHours(1)))
.triggering(AfterProcessingTime.pastFirstElementInPane()
它是从第一次看到第一个元素时每次都触发还是隐式地批处理元素?因为触发每个元素会使系统过载。
对于这两个触发器,window 将被触发一次,所有剩余的元素将被丢弃。可以使用Repeatedly.forever(...)
多次触发
关于您的具体问题,如果元素大约同时到达,则会发生少量批处理。
假设你的意思是下面的,那么是的,第二个会更频繁地触发,并且可能会使系统过载。
Repeatedly.forever(AfterProcessingTime.pastFirstElementInPane()
.plusDelayOf(Duration.standardMinutes(15)))
对比
Repeatedly.forever(AfterProcessingTime.pastFirstElementInPane())