为数据帧操作定义dask工作者资源
问题描述:
我正在将多个操作应用于dask数据框。我可以为特定操作定义分布式工作人员资源需求吗为数据帧操作定义dask工作者资源
例如我打电话是这样的:
df.fillna(value="").map_partitions(...).map(...)
我想指定map_partitions资源需求()(比那些潜在的不同的地图()),但好像方法不接受资源参数。
PS。或者,我发现我可以在map_partitions()之后调用client.persist()并在此调用中指定资源,但是这会立即触发计算。
答
当您通过提供中间集合调用compute
或persist
时,可以指定计算特定部分的资源约束。
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)