如果我有这样的窗户
.apply(Window
.<String>into(Sessions
.withGapDuration(Duration.standardSeconds(10)))
.triggering(AfterWatermark
.pastEndOfWindow()
.withEarlyFirings(AfterPane.elementCountAtLeast(1))));它接收数据:
a -> x (timestamp 0) (received at 20)
a -> y (timestamp 1) (received at 21)
(watermark passes 11) (at 22)我想窗口有时会触发:
在我应用于加窗数据的ParDo函数中,是否有一种方法可以区分早期触发和通过GapDuration的水印
根据this stackoverflow question,没有办法获得水印。如果我能做到这一点,我可以检查max(timestamp) < watermark。但是,由于我无法获得水印,是否有其他方法可以确定一个窗口是由通过它的水印触发的。
发布于 2016-03-09 22:27:55
您可以通过调用PaneInfo (调用ProcesContext#pane() )来访问GroupByKey之后的DoFn中元素的ProcesContext#pane(),并使用它来确定Timing。这将允许您识别这是一个“准时”的射击(由于水印通过窗口的末端)或投机/迟发射。
https://stackoverflow.com/questions/35893275
复制相似问题