gpt4 book ai didi

python - 将 Dask 分区写入单个文件

转载 作者:IT老高 更新时间:2023-10-28 21:02:59 32 4
gpt4 key购买 nike

dask 的新手,当我在 dask 数据帧中读取它时,我有一个 1GB CSV 文件,它在我更改后创建了大约 50 个分区当我写入文件时,它会创建与分区一样多的文件。
有没有办法将所有分区写入单个 CSV 文件,有没有办法访问分区?
谢谢。

最佳答案

简答

不,Dask.dataframe.to_csv 仅将 CSV 文件写入不同的文件,每个分区一个文件。但是,有一些方法可以解决这个问题。

之后连接

也许只是在 dask.dataframe 写入文件后连接文件?这在性能方面可能接近最佳。

df.to_csv('/path/to/myfiles.*.csv')
from glob import glob
filenames = glob('/path/to/myfiles.*.csv')
with open('outfile.csv', 'w') as out:
for fn in filenames:
with open(fn) as f:
out.write(f.read()) # maybe add endline here as well?

或者使用 Dask.delayed

但是,您可以使用 dask.delayed 自己执行此操作, 由 using dask.delayed alongside dataframes

这为您提供了一个延迟值列表,您可以随意使用它们:

list_of_delayed_values = df.to_delayed()

然后由您来构建计算以将这些分区顺序写入单个文件。这并不难做到,但会导致调度程序上的一些备份。

编辑 1:(2019 年 10 月 23 日)

在 Dask 2.6.x 中,有一个参数为 single_file。默认情况下,它是 False。您可以将其设置为 True 以在不使用 df.compute() 的情况下获取单个文件输出。

例如:

df.to_csv('/path/to/myfiles.csv', single_file = True)

引用:Documentation for to_csv

关于python - 将 Dask 分区写入单个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39566809/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com