在许多镶木地板文件上重新整理Dask数据框

时间:2019-01-25 08:00:01

标签: dask dask-distributed

我有一个分散的集群,分布在许多工作节点上。 我也有一个S3存储桶,其中存储了尽可能多的实木复合地板文件(目前为500k文件,将来可能是其三倍)。

实木复合地板中的数据主要是文本: [用户名,名字,姓氏,电子邮件,电子邮件域]

我想加载它们,重新排列它们,并存储新分区。 我希望能够根据email_domain对选择项进行分组,因此我想针对每个email_domain分组一个新的拼花文件

当前,我使用from_delayed和groupby,但是生成的DAG具有shuffle-split大小的n**2层-但这不适合我的调度程序内存。 大致情况:

def store(x):
   path = f's3://bucket/{x.name}.parquet'
   x.to_parquet(path)
   return path

z = df.groupby('email_domain').apply(store, meta=('email_domain', 'object'))
visualize(z)
z.compute()

1 个答案:

答案 0 :(得分:0)

是的,groupby-apply非常昂贵,尤其是并行应用。

我希望事情仍然可以进行,但是会很慢。