Google cloud platform Apache Beam使用早期触发器触发窗格的次数

Google cloud platform Apache Beam使用早期触发器触发窗格的次数,google-cloud-platform,google-cloud-dataflow,apache-beam,Google Cloud Platform,Google Cloud Dataflow,Apache Beam,在流束管道中,触发器设置为 Window.into(FixedWindows.of(Duration.standardHours(1))) .triggering(AfterWatermark .pastEndOfWindow() .withEarlyFirings(AfterProcessingTime

在流束管道中,触发器设置为

Window.into(FixedWindows.of(Duration.standardHours(1)))
              .triggering(AfterWatermark
                            .pastEndOfWindow()
                            .withEarlyFirings(AfterProcessingTime
                                    .pastFirstElementInPane()
                                    .plusDelayOf(Duration.standardMinutes(15))))
              .withAllowedLateness(Duration.standardHours(1))
              .accumulatingFiredPanes())
  • 如果在早期触发(当前窗口的第一个元素后15分钟)和水印之间没有新数据,水印结束时是否会再次触发

  • 如果是,在同一场景下,如果
    累计FiredPanes
    更改为
    丢弃FiredPanes
    ,水印末尾是否会再次触发

  • 对。当水印经过窗口末端时,应该始终有一个触发。提前发射窗格将标记为“早”,水印窗格将标记为“准时”

  • 是的,目前我们始终保证有一个on_时间窗格,这意味着将在水印的末尾触发

  • 对于#2,您可以将
    窗口.ClosingBehavior
    作为第二个参数设置为
    ,并使用Allowedlateness
    。有两种变体:

    • 永远开火
    • 如果非空,则点火

    请参见释义(1),当使用
    累积FiredPanes
    时,光束是否会发射与水印后再次发射的完全相同的窗格?添加3,如果
    ,前面问题的答案是否会更改。指定了withOnTimeBehavior(Window.OnTimeBehavior.fire\u如果非空)
    ?此API注释为
    @Experimental
    。我不确定它是否有任何实际效果。对于第2点,即使点火窗格是空的,也会发生火灾。对于一个空窗格,下游的
    PCollection
    对于这样一个空窗格会得到什么(假设转换是一些
    组合
    而没有配置默认值)?