设置如下:我有八个大的csv文件(每个文件32GB),它们被压缩为每个8GB的Zip文件。我不能使用未压缩的数据,因为我想要节省磁盘空间,而且没有剩余32*8GB的空间。我不能用例如
我认为Dask是这项任务的合理选择,但如果您认为其他工具更适合,则可以自由建议。
是否可能通过同时读取压缩文件的多个块、处理每个块并将结果保存到磁盘来处理一个8GB的压缩文件?
第一个问题是,Dask不支持
第二个问题,可能与压缩格式的选择有关,即是否可以并行访问压缩文件的部分内容。
还是将每个未压缩的csv文件拆分成适合内存的较小部分,然后使用类似以下方式处理重新压缩的较小部分更好:
pandas
加载一个文件,因为它无法适应内存。我认为Dask是这项任务的合理选择,但如果您认为其他工具更适合,则可以自由建议。
是否可能通过同时读取压缩文件的多个块、处理每个块并将结果保存到磁盘来处理一个8GB的压缩文件?
第一个问题是,Dask不支持
.zip
。此问题建议使用dask.delayed
,但我也可以更改格式为.xz
或其他格式。第二个问题,可能与压缩格式的选择有关,即是否可以并行访问压缩文件的部分内容。
还是将每个未压缩的csv文件拆分成适合内存的较小部分,然后使用类似以下方式处理重新压缩的较小部分更好:
import dask.dataframe as dd
df = dd.from_csv('files_*.csv.xz', compression='xz')
目前,我更偏向于第一种解决方案,因为它看起来更简洁,但由于这个领域对我来说是新的,我可能完全错了。
谢谢你的帮助!