我计划使用Google Dataflow来协调人工循环表单的完成,并在完成3个表单后检查冲突。我已经为数据流源和接收器设置了Google PubSub,并且只想触发触发器并在收到给定JobId
的三个表单后发送到PubSub接收器。
This SO post看起来类似于我试图解决的问题,但是当我实现它时,触发器正在触发并在到达AfterPane.elementCountAtLeast之前将输出发送到PubSub接收器。
我已尝试使用GlobalWindow
和SlidingWindow
s。在达到elementCountAtLeast
后我触发了触发器,我计划为GroupByKey
实施jobId
。但是,在我迈向这一步之前,我想让elementCountAtLeast
孤立地工作。
以下是从PubSub和SlidingWindow
:
PCollection<String> humanInTheLoopInput;
humanInTheLoopInput = pipeline
.apply(PubsubIO.Read
.named("ReadFromHumanInTheLoopSubscription")
.subscription(options.getInputHumanInTheLoopRawSubscription()));
PCollection<String> windowedInput = humanInTheLoopInput
.apply(Window
.<String>into(SlidingWindows
.of(Duration.standardSeconds(30))
.every(Duration.standardSeconds(5)))
.<String>triggering(Repeatedly.forever(AfterPane.elementCountAtLeast(3)))
.discardingFiredPanes()
.withAllowedLateness(Duration.standardDays(10)));
答案 0 :(得分:2)
如果没有GroupByKey
,则不会触发任何内容。窗口化和触发仅影响分组(和组合)操作。