sdk2.x中的Dataflow Sideinputs工作缓存大小

2024-09-28 21:43:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用~1GB大侧输入的DoFn中遇到性能问题。边输入是使用pvalue.AsList()传递的,它强制边输入的具体化

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

我怎么知道这个缓存到底有多大?有没有一种方法可以使用Beam Python sdk2.15.0来控制它的大小(就像在java1.xsdk中有pipeline选项--workerCacheMb=200)

没有一种简单的方法可以将我的输入缩减10%以上


Tags: 数据方法管道时间步骤性能ram花费
1条回答
网友
1楼 · 发布于 2024-09-28 21:43:17

如果您使用的是AsList,那么应该将整个side输入加载到内存中是正确的。这可能是因为您的工作程序有足够的可用内存,但将1GB的数据读入列表只需要很长时间。而且,读取的数据的大小取决于它的编码。如果你能分享更多关于你的算法的细节,我们可以试着找出如何编写一个可以更有效运行的管道


另一种选择可能是使用外部服务来保留您的输入—例如,您在一侧写入的Redis实例,另一侧的red实例

相关问题 更多 >