能不能以块为单位读取压缩文件?

时间:2019-01-15 07:11:16

标签: python dask

Dask能够读取大块的压缩文件吗?

读取.xz文件时,我在this notebook中收到几个错误,

import dask.bag as db

bag = db.read_text('data/1-input/RC_2018-09.xz', blocksize=100e6).map(json.loads)
  

ValueError:无法从使用compression ='xz'压缩的文件中推断出逻辑大小

     

ValueError:无法对使用compression ='xz'压缩的文件进行分块读取。要读取,请设置blocksize = None

显式设置compression='xz'也会导致错误。

深入研究,我发现compression.py中有关xz文件的几行已被注释掉,所以我想知道这是否已被禁用。

根据xz specs,它确实支持在有限的块大小内进行随机访问读取。

这对我而言并不重要-我总是可以解压缩然后运行Dask-这样只会节省一些磁盘空间。

谢谢!

1 个答案:

答案 0 :(得分:0)

XZ确实支持压缩,但是在实践中很少见。维护它的成本最终大于使用它,因此维护人员停止维护此功能。如果您有兴趣进行维护,那么欢迎您,并且可以将其重新添加。