我正在使用 Dask 进行复杂的操作。首先我做了一个减少,产生一个中等大小的df(几MB),然后我需要将它传递给每个工人来计算最终结果,所以我的代码看起来有点像这样
intermediate_result = ddf.reduction().compute()
final_result = ddf.reduction(
chunk=function, chunk_kwargs={"intermediate_result": intermediate_result}
)
但是我收到看起来像这样的警告消息
Consider scattering large objects ahead of time
with client.scatter to reduce scheduler burden and
keep data on workers
future = client.submit(func, big_data) # bad
big_future = client.scatter(big_data) # good
future = client.submit(func, big_future) # good
% (format_bytes(len(b)), s)
我试过这样做
intermediate_result = client.scatter(intermediate_result, broadcast=True)
但这不起作用,因为函数现在将其视为 Future 对象,而不是它应该是的数据类型。我似乎找不到任何关于如何使用 scatter 减少的文档,有人知道如何做到这一点吗?还是我应该忽略警告消息并像我一样传递中等大小的df?