【发布时间】:2017-02-13 16:07:58
【问题描述】:
我们正在运行一个处理多个输入流的 Dataflow 作业。其中一些是高流量的,其中一些很少通过消息。我们将所有流与包含与所有元素相关的信息的“共享”流连接起来。这是管道的简化示例:
我注意到该作业不会产生任何输出,直到 两个 流都包含一些流量。
例如,假设Stream 1 获得了稳定的流量,而Stream 2 在一段时间内没有产生任何消息。这次,作业的 DAG 将显示在 GroupByKey 步骤中累积的元素,但不会传播任何内容。我还可以看到 Flatten PCollections 步骤显示图表左侧的输入元素,而不是右侧的输入元素。这在处理同一作业中的高流量和低流量流时会产生问题,因为它会导致输出延迟与Stream 2 获取消息所需的时间一样多。
我不确定观察结果是否正确,但我想问一下 Flatten/GroupByKey 的一般工作原理是否如此,如果是这样,我们看到的问题是否可以通过另一种构建管道的方式来避免.
(示例 JobID:2017-02-10_06_48_01-14191266875301315728)
【问题讨论】:
-
您在该步骤中使用了什么样的窗口和触发方式?即使没有来自流的元素,您也应该能够配置您的窗口/触发器以工作。
-
@Pablo
FixedWindows和Sessions使用默认触发器和第二种情况的 30 分钟间隔持续时间。据我所知,我可以添加一个触发器,该触发器使用处理时间或添加的元素数量过早触发,但我想避免这种情况,因为这意味着某些会话将不完整(30 分钟的不活动可能不会已经过去)当窗格被触发时。
标签: google-cloud-platform google-cloud-dataflow