数据流 TextIO.write 缩放问题
Posted
技术标签:
【中文标题】数据流 TextIO.write 缩放问题【英文标题】:Dataflow TextIO.write issues with scaling 【发布时间】:2019-08-05 19:06:50 【问题描述】:我创建了一个简单的数据流管道,它从 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
【问题讨论】:
【参考方案1】:所以对于您的每个问题:
当此步骤如此备份时,Dataflow 不自动扩展是否有充分的理由?
流式自动缩放是一项测试版功能,必须根据文档 here 明确启用它才能工作。
当使用 6 个工人时,计算挂壁时间似乎有问题?
我的猜测是您运行 6 个工作人员管道大约 5 小时 4 分钟,因此显示的“Wall time”是 Workers*Hours。
【讨论】:
啊,真尴尬。不知何故,我完全错过了这样一个事实,即在自动缩放部分的开头它说“用于批处理作业”默认情况下它是打开的。以上是关于数据流 TextIO.write 缩放问题的主要内容,如果未能解决你的问题,请参考以下文章