我创建了一个简单的数据流管道,它从 pubsub 读取字节数组,将它们窗口化,然后写入 GCS 中的文本文件。我发现对于流量较低的主题,这非常有效,但是我在一个每分钟大约 2.4GB 的主题上运行它,并且开始出现一些问题。
在启动管道时,我没有设置工作人员的数量(正如我想象的那样,它会根据需要自动扩展)。在摄取这么多数据时,worker 的数量保持在 1,但 TextIO.write() 需要 15 分钟以上才能写入 2 分钟的窗口。这将继续备份,直到内存不足。当这一步得到如此备份时,Dataflow 不自动扩展是否有充分的理由?
当我将工作人员的数量增加到 6 个时,写入文件的时间从 4 分钟左右开始,持续 5 分钟,然后下降到 20 秒。
另外,当使用 6 名工人时,计算挂墙时间似乎有问题?即使数据流已经赶上并且运行 4 小时后,我的写入步骤摘要看起来像这样,我的似乎也永远不会下降:
Step summary
Step name: Write to output
System lag: 3 min 30 sec
Data watermark: Max watermark
Wall time: 1 day 6 hr 26 min 22 sec
Input collections: PT5M Windows/Window.Assign.out0
Elements added: 860,893
Estimated size: 582.11 GB
职位编号:2019-03-13_19_22_25-14107024023503564121