1

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

例如,我称之为:

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

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

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

4

1 回答 1

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

于 2017-08-28T13:08:51.857 回答