使用集合
使用集合¶
我们经常希望使用 dask.delayed
进行一些自定义工作(例如,处理复杂的数据摄入),然后利用 dask.array
或 dask.dataframe
中的算法,然后再切换回自定义工作。为此,所有集合都支持 from_delayed
函数和 to_delayed
方法。
举个例子,考虑一种情况,我们将表格数据存储在 Dask DataFrame 不知晓的自定义格式中。这种格式可以自然地分解成多个部分,并且我们有一个函数可以将其中一个部分读取到 Pandas DataFrame 中。我们使用 dask.delayed
来延迟读取这些文件到 Pandas DataFrames,使用 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
为用户提供了管理这种复杂性的方法,并解决了自定义格式和复杂情况下的“最后一英里”问题。