为数据帧操作定义dask worker资源

时间:2017-08-28 10:29:57

标签: dask dask-distributed

我将多个操作应用于dask数据帧。我可以为特定操作定义分布式工作人员资源要求吗?

e.g。我称之为:

df.fillna(value="").map_partitions(...).map(...)

我想指定 map_partitions()的资源需求(可能与 map()的资源需求不同),但似乎该方法不接受资源参数。

PS。或者,我发现我可以在 map_partitions()之后调用 client.persist()并在此调用中指定资源,但这会立即触发计算。

1 个答案:

答案 0 :(得分:1)

通过提供中间集合,当您调用computepersist时,可以指定计算特定部分的资源限制。

x = dd.read_csv(...)
y = x.map_partitions(func)
z = y.map(func2)

z.compute(resources={tuple(y._keys()): {'GPU': 1}})

感谢您提出这个问题,我去了一个关于此功能的文档的链接,发现它没有记录。我很快就会解决。

今天看起来有一个错误,在某些情况下可以优化中间键(尽管这不太可能用于数据帧操作),因此您可能还想传递optimize_graph=False关键字。

z.compute(resources={tuple(y._keys()): {'GPU': 1}}, optimize_graph=False)

请参阅https://github.com/dask/distributed/pull/1362