我们正在运行处理多个输入流的Dataflow作业。其中一些是高流量,其中一些很少收到消息。我们使用包含与所有元素相关的信息的“共享”流来加入所有流。这是管道的一个简单的例子:Dataflow流水线在执行GroupBy之前等待来自所有流的元素
我注意到,工作不会产生任何输出,直到都流包含一定的流量。
例如,假设Stream 1
获得稳定的流量,而Stream 2
在一段时间内不会产生任何消息。此时,作业的DAG将显示GroupByKey
步骤中正在积累的元素,但是除此之外没有任何内容会传播。我还可以看到Flatten PCollections步骤显示图表左侧的输入元素,但不是正确的。当处理同一作业中的高流量流量和低流量流时,这会产生问题,因为这将导致输出延迟达到Stream 2
拾取消息所需的量。
我不确定观察结果是否正确,但我想问一下,这是一般的Flatten/GroupByKey如何工作,如果是这样,如果我们看到的问题可以通过构建管道。
(实施例作业ID:2017-02-10_06_48_01-14191266875301315728)
你在那一步使用了什么样的窗口和触发器?即使没有流中的元素,您也应该能够配置您的窗口/触发器来工作。 – Pablo
@Pablo'FixedWindows'和'Sessions'具有默认触发器和第二种情况下30分钟的间隔持续时间。 据我所知,我可以添加一个触发器,使用处理时间或过早添加的元素数量,但我想避免这种情况,因为这意味着某些会话将不完整(30分钟不活动可能没有通过)当面板被触发时。 – livathinos