2017-08-28 101 views
1

我正在將多個操作應用於dask數據框。我可以爲特定操作定義分佈式工作人員資源需求嗎爲數據幀操作定義dask工作者資源

例如我打電話是這樣的:

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

我想指定map_partitions資源需求()(比那些潛在的不同的地圖()),但好像方法不接受資源參數。

PS。或者,我發現我可以在map_partitions()之後調用client.persist()並在此調用中指定資源,但是這會立即觸發計算。

回答

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