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

为数据帧操作定义dask工作资源,dask,dask-distributed,Dask,Dask Distributed,我正在对dask数据帧应用多个操作。我可以为特定操作定义分布式工作人员资源需求吗 e、 g.我称之为: df.fillna(value="").map_partitions(...).map(...) 我想为map_分区()指定资源需求(可能与map()的不同),但该方法似乎不接受resources参数 另外,我发现我可以在map_partitions()之后调用client.persist(),并在这个调用中指定资源,但这会立即触发计算。您可以在调用compute或persist时,通过提供

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

e、 g.我称之为:

df.fillna(value="").map_partitions(...).map(...)
我想为map_分区()指定资源需求(可能与map()的不同),但该方法似乎不接受resources参数


另外,我发现我可以在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}})
谢谢你的提问,我加入了一个关于这个特性的文档链接,发现它没有文档记录。我很快就会修好的

看起来今天有一个bug,在某些情况下,中间键可能会被优化掉(尽管这对于数据帧操作来说不太可能),因此您可能还希望传递
optimize\u graph=False
关键字

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

请参见

在图中尝试使用
to_parquet
实现此目的时,也存在一个错误-请参见