【发布时间】:2018-06-07 13:01:03
【问题描述】:
设置是我有八个大型 csv 文件(每个 32GB),每个文件都用 Zip 压缩到 8GB 文件。我无法使用未压缩的数据,因为我想节省磁盘空间并且没有 32*8GB 剩余空间。我无法加载一个文件,例如pandas 因为它不适合内存。
我认为 Dask 是该任务的合理选择,但如果您认为它适合该目的,请随时提出不同的工具。
是否可以通过并行读取压缩文件的多个块,处理每个块并将结果保存到磁盘来使用 Dask 处理一个 8GB 压缩文件?
第一个问题是Dask does not support .zip。 This issue 建议使用dask.delayed,但我也可以将格式更改为.xz 或其他。
其次,可能与压缩格式的选择有关的是,是否可以仅并行访问压缩文件的一部分。
或者最好将每个未压缩的 csv 文件拆分为适合内存的较小部分,然后使用以下内容处理重新压缩的较小部分:
import dask.dataframe as dd
df = dd.from_csv('files_*.csv.xz', compression='xz')
目前,我更喜欢类似于第一个解决方案的东西,它似乎更精简,但我可能完全误会了,因为这个域对我来说是新的。
感谢您的帮助!
【问题讨论】:
标签: python csv compression dask