次阿帕奇梁数量窗格早期触发发射(Apache Beam number of times a pane

2019-09-26 07:38发布

在流束管道,触发设置为

Window.into(FixedWindows.of(Duration.standardHours(1)))
              .triggering(AfterWatermark
                            .pastEndOfWindow()
                            .withEarlyFirings(AfterProcessingTime
                                    .pastFirstElementInPane()
                                    .plusDelayOf(Duration.standardMinutes(15))))
              .withAllowedLateness(Duration.standardHours(1))
              .accumulatingFiredPanes())
  1. 如果有早期的点火之间和水印没有新的数据(当前窗口的第一个元素后15分钟),会不会有其他的水印结束射击?

  2. 如果是的话,同样的情况下,会不会有其他射击在水印结束时,如果accumulatingFiredPanes改为discardingFiredPanes

Answer 1:

  1. 是。 凡事总有一个发射时的水印经过窗口的结束。 早期的射击窗格最早将于标记和水印窗格将被标记为时间。

  2. 是的,目前我们始终保证一个ON_TIME窗格,这意味着将在水印的最后一个射击。



Answer 2:

#2,您可以设置Window.ClosingBehavior作为第二个参数withAllowedLateness 。 有两个变种:

  • FIRE_ALWAYS
  • FIRE_IF_NON_EMPTY

见https://beam.apache.org/releases/javadoc/2.6.0/org/apache/beam/sdk/transforms/windowing/Window.ClosingBehavior.html



文章来源: Apache Beam number of times a pane is fired with early triggers