在Python 2.7中读取大型lz4压缩的JSON数据集

在Python 2.7中读取大型lz4压缩的JSON数据集

问题描述:

我需要分析一个大型数据集,它以lz4压缩JSON文件的形式分发。在Python 2.7中读取大型lz4压缩的JSON数据集

压缩文件差不多是1TB。由于成本原因,我不希望将其解压缩到磁盘。数据集中的每个“记录”都非常小,但将整个数据集读入内存显然是不可行的。

有关如何遍历Python 2.7中的这个大型lz4压缩JSON文件中的记录的任何建议?

+0

你必须检查lz4文件是什么格式。如果它是一个帧格式,那么它有多个块,你可以继续解包和逐块处理。如果是(单一)块格式,那么需要做更多工作 –

+0

有关如何判断它是帧还是块格式的任何提示?这是我第一次穿越lz4。 – SecurityGuy

+0

仅在C++中使用 - 在lz4发行版中有一个lz4库,它有帧分析代码,部分解码等。值得下载并查看:https://github.com/lz4/lz4/releases/tag/v1 .8.0 –

python lz4 bindings的版本0.19.1开始,全面支持所提供的缓冲IO。所以,你应该能够做这样的事情:

import lz4.frame 
chunk_size = 128 * 1024 * 1024 
with lz4.frame.open('mybigfile.lz4', 'r') as file: 
    chunk = file.read(size=chunk_size) 
    # Do stuff with this chunk of data. 

将数据从文件大约128 MB一次读取。

另外:我是python lz4软件包的维护者 - 如果您的软件包有问题,或者documentation中的内容不明确,请在project page上执行文件问题。