使用集合

使用集合

通常,我们希望使用 dask.delayed 进行一些自定义工作(例如,处理复杂的数据摄取),然后利用 dask.arraydask.dataframe 中的算法,最后再切换回自定义工作。为此,所有集合都支持 from_delayed 函数和 to_delayed 方法。

举个例子,假设我们将表格数据存储在 Dask DataFrame 不认识的自定义格式中。这种格式自然地被分解成多个部分,我们有一个函数可以将每个部分读取到 Pandas DataFrame 中。我们使用 dask.delayed 延迟读取这些文件到 Pandas DataFrame,使用 dd.from_delayed 将这些部分打包成一个 Dask DataFrame,使用 DataFrame 中复杂的算法(groupby、join 等),然后切换回 dask.delayed 将结果保存回自定义格式。

import dask.dataframe as dd
from dask.delayed import delayed

from my_custom_library import load, save

filenames = ...
dfs = [delayed(load)(fn) for fn in filenames]

df = dd.from_delayed(dfs)
df = ... # do work with dask.dataframe

dfs = df.to_delayed()
writes = [delayed(save)(df, fn) for df, fn in zip(dfs, filenames)]

dd.compute(*writes)

数据科学往往很复杂,而 dask.delayed 为用户提供了一个“减压阀”,让他们能够自行管理这种复杂性,并解决自定义格式和复杂情况下的“最后一公里”问题。