数据流如何触发AfterProcessingTime.pastFirstElementInPane()工作?

时间:2017-05-10 19:10:02

标签: google-cloud-dataflow apache-beam spotify-scio

在Dataflow流媒体世界中。

我的理解当我说:

Window.into(FixedWindows.of(Duration.standardHours(1)))
  .triggering(AfterProcessingTime.pastFirstElementInPane()
      .plusDelayOf(Duration.standardMinutes(15))

对于一小时的固定窗口,触发器在看到第一个元素后等待或批处理元素。

但是当我说:

Window.into(FixedWindows.of(Duration.standardHours(1)))
  .triggering(AfterProcessingTime.pastFirstElementInPane()

从第一次看到第一个元素时它是每次都触发还是隐式批处理元素?因为在每个元素上触发都会使系统过载。

1 个答案:

答案 0 :(得分:5)

使用这两个触发器,窗口将被触发一次,并且将丢弃任何剩余的元素。您可以使用Repeatedly.forever(...)多次触发。

关于您的具体问题,如果元素大约在同一时间到达,则会发生少量批处理。

假设你的意思是以下,那么是的,第二个会更频繁地触发,并可能使系统超载。

Repeatedly.forever(AfterProcessingTime.pastFirstElementInPane()
    .plusDelayOf(Duration.standardMinutes(15)))

VS

Repeatedly.forever(AfterProcessingTime.pastFirstElementInPane())