数据流 .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次吗?
是否保证会有:
- 只有一个 ON_TIME 窗格(由水印通过 window 末尾触发)?
- 恰好 3 个其他窗格(EARLY 或 LATE),每个元素恰好 1 个?
我正在查看 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
窗格,它们将不会作为未来窗格的一部分被重新激发(尽管如果您正在累积激发的窗格,它们将继续合并到结果中) .
如果我有这样的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次吗?
是否保证会有:
- 只有一个 ON_TIME 窗格(由水印通过 window 末尾触发)?
- 恰好 3 个其他窗格(EARLY 或 LATE),每个元素恰好 1 个?
我正在查看 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
窗格,它们将不会作为未来窗格的一部分被重新激发(尽管如果您正在累积激发的窗格,它们将继续合并到结果中) .