我无法使用分布式集群来处理此块。
import pandas as pd
from dask import dataframe as dd
import dask
df = pd.DataFrame({'reid_encod': [[1,2,3,4,5,6,7,8,9,10],[1,2,3,4,5,6,7,8,9,10],[1,2,3,4,5,6,7,8,9,10],[1,2,3,4,5,6,7,8,9,10],[1,2,3,4,5,6,7,8,9,10],[1,2,3,4,5,6,7,8,9,10]]})
dask_df = dd.from_pandas(df, npartitions=3)
save_val = []
def add(dask_df):
for _, outer_row in dask_df.iterrows():
for _, inner_row in dask_df.iterrows():
for base_encod in outer_row['reid_encod']:
for compare_encod in inner_row['reid_encod']:
val = base_encod + compare_encod
save_val.append(val)
return save_val
from dask.distributed import Client
client = Client(...)
dask_compute = dask.delayed(add)(dask_df)
dask_compute.compute()
我也有几个疑问
dask.delayed是否使用可用的群集进行计算。
我可以使用延迟来并行化此熊猫DF的for循环迭代,并使用群集中存在的多台计算机进行计算。
在熊猫数据框上进行分布式操作。
我们可以使用dask.delayed在dask.distributed中。
如果上述编程方法不正确,您可以指导我为上述情况选择延迟还是慢速DF。
您的代码的主要问题已在最佳实践的this section中进行了概述:不要将Dask集合传递给延迟的函数。这意味着,您应该使用delayed
API 或dataframe
API。虽然您可以转换延迟的数据帧,但不建议像这样简单地传递。此外,