数据流 .elementCountAtLeast(1) 与 .pastEndOfWindow() 保证

Dataflow .elementCountAtLeast(1) with .pastEndOfWindow() guarantees

如果我有这样的window:

.apply(Window
    .<String>into(Sessions
        .withGapDuration(Duration.standardSeconds(10)))
    .triggering(AfterWatermark
        .pastEndOfWindow()
        .withEarlyFirings(AfterPane.elementCountAtLeast(1))
        .withLateFirings(AfterPane.elementCountAtLeast(1))));

并且它从 Pub/Sub 接收 3 个元素。

window能保证正好触发4次吗?

是否保证会有:

我正在查看 Timing,上面写着:

An ON_TIME pane may contain locally late elements. It may even contain only locally late elements. Provided a locally late element finds its way into an ON_TIME pane its lateness becomes unobservable.

好吧,ON_TIME 窗格可以包含 LATE 元素,但是 .withLateFirings(AfterPane.elementCountAtLeast(1)) 是否会为 [=34] 中的每个 LATE 元素触发另一个窗格=] 窗格,或者这些元素不会触发,因为它们是 ON_TIME 窗格的一部分?

元素仅 "new" 在单个窗格中。假设没有空窗格,则 3 个输入元素最多应导致 3 个输出窗格。使用该触发器,可能会有一个空的 ON_TIME 窗格。您还可以通过指定 ClosingBehavior

来请求一个空的最终窗格

如果迟到的元素进入 ON_TIME 窗格,它们将不会作为未来窗格的一部分被重新激发(尽管如果您正在累积激发的窗格,它们将继续合并到结果中) .