2017-06-16 87 views
3

期望分区:我会想到的是,当我分割给定数据框,行会大致平均分配到每个分区。然后我会想到的是,当我写数据帧到CSV,产出的正的CSV(在这种情况下,10),将类似地大致相等的长度。分布行之间的DASK数据帧

现实:当我运行下面的代码时,我发现,而不是有点均匀分布的行,所有行都在export_results-0.csv,其余9个csvs是空的。

问:是否有我需要设置,以确保行分配的所有分区之间的额外配置?

from dask.distributed import Client 
import dask.dataframe as dd 
import pandas as pd 

client = Client('tcp://10.0.0.60:8786') 

df = pd.DataFrame({'geom': np.random.random(1000)}, index=np.arange(1000)) 
sd = dd.from_pandas(df, npartitions=100) 

tall = dd.merge(sd.assign(key=0), sd.assign(key=0), on='key').drop('key', axis=1) 
tall.to_csv('export_results-*.csv').compute() 

关于上面的代码:在下面的代码中,我创建了一个有1000行数据帧,并用自己的才能创造出百万行长期数据框合并它(的目标是最终生成一个瘦瘦高高表保持从任何一个到100k +列表中的任何其他几何体的距离)。

回答

2

所以,在两个DASK dataframes之间的连接可以是非常昂贵的DASK文档的数据框性能科的注意。

通过加入一个DASK数据帧的数据帧的熊猫,我似乎能够保存的分区。以下是对上述代码的修改示例:

df1 = pd.DataFrame({ 'geom': np.random.random(200) }, index=np.arange(200)) 
sd1 = dd.from_pandas(df1.copy(), npartitions=5).assign(key=0) 

tall = dd.merge(sd1, df1.assign(key=0), on='key', npartitions=10).drop('key', axis=1) 
tall.to_csv('exported_csvs/res-*.csv') 

现在,这实现了维护分区的目标。尽管如此,我仍然有兴趣在理解为什么分区貌似不能合并两个DASK dataframes时保留。