[Dataflow Sideinputs-SDK 2.x中的工作者缓存大小

问题描述 投票:0回答:1

我在使用〜1GB的大型侧面输入的DoFn中的管道中遇到性能问题。使用pvalue.AsList()传递侧面输入,这将强制侧面输入实现。

管道的执行图显示,特定步骤花费了大部分时间来读取侧面输入。读取的数据总量远远超过了侧面输入的大小。因此,我得出结论,即使工人的RAM足够,侧面输入也不适合它们的内存/缓存(使用具有26 GB RAM的n1-highmem4 worker)。

我怎么知道这个缓存实际上有多大?是否可以使用Beam Python SDK 2.15.0(如Java 1.x SDK的管道选项--workerCacheMb = 200)来控制其大小?]

没有简单的方法可以将我的侧面输入缩小超过10%。

python google-cloud-dataflow
1个回答
0
投票

如果使用AsList,则正确的是将整个侧面输入都加载到内存中。可能是您的工作人员有足够的可用内存,但是将1GB的数据读取到列表中只需要很长时间。另外,读取的数据大小取决于其编码。如果您可以分享有关算法的更多详细信息,我们可以尝试找出如何编写可以更有效运行的管道的方法。


[另一种选择可能是拥有外部服务来保持您的侧边输入-例如,您一侧写入的Redis实例,而另一侧则写入红色。

© www.soinside.com 2019 - 2024. All rights reserved.