【发布时间】:2019-08-08 23:41:39
【问题描述】:
我有几个(每个 3.5GB)gzip 文件,目前我正在使用 Pandas 读取这些文件,但速度很慢,我也尝试过 Dask,但它似乎不支持 gzip 文件破坏.有没有更好的方法来快速加载这些海量的 gzip 文件?
Dask 和 Pandas 代码:
df = dd.read_csv(r'file', sample = 200000000000,compression='gzip')
我希望它尽快读取整个文件。
【问题讨论】:
-
gzip 解压缩只有在压缩器被配置为每隔一段时间重置其表时才能天生并行化。否则,必须从头到尾阅读才能获得必要的状态来理解内存中的流。请参阅
pigz作为提供此类压缩器和解压缩器的并行 gzip 实现(在 C 中);但是,如果您无法更改压缩端使用的工具和设置,那么您在解压端所做的任何事情都不会有什么好处。 -
...坦率地说,如果您可以更改压缩端使用的工具,最好让它们从 gzip 切换。查看facebook.github.io/zstd 的基准,尤其是用于解压的基准。
-
我不确定 Pandas 但
gzip模块是用纯 python 实现的,所以它肯定会很慢。也许 pypy 可以给你一个加速。归根结底,您正在尝试解压缩几个千兆字节的文件并将其未压缩的数据全部存储在内存中。这需要时间。如果可能,请考虑流式传输数据。