1

根据fastparquet的项目页面fastparquet支持多种压缩方式

可选(压缩算法;gzip 始终可用):

snappy (aka python-snappy)
lzo
brotli
lz4
zstandard

尤其zstandard是现代算法,它提供了高压缩比以及令人印象深刻的快速压缩/解压缩速度。这就是我在 fastparquet 中想要的。

但是在fastparquet.write的文档中

压缩应用于每一列,例如 GZIP 或 SNAPPY 或像 {"col1": "SNAPPY", "col2": None} 这样的字典来指定每列的压缩类型。在这两种情况下,压缩器设置都是底层压缩器默认值。要将参数传递给底层压缩器,每个 dict 条目本身应该是一个字典:

{
    col1: {
        "type": "LZ4",
        "args": {
            "compression_level": 6,
            "content_checksum": True
         }
    },
    col2: {
        "type": "SNAPPY",
        "args": None
    }
    "_default": {
        "type": "GZIP",
        "args": None
    }
}

没有提到zstandard。更糟糕的是,如果我写

fastparquet.write('outfile.parq', df, compression='LZ4')

它弹出错误说

压缩“LZ4”不可用。选项:['GZIP','未压缩']

所以fastparquest只支持'GZIP'?这与项目页面有很大的差异!我错过了一些包裹吗?如何将 fastparquest 与所有项目页面声明的压缩算法一起使用?

4

1 回答 1

1

是的,您可能缺少一些软件包。您的系统必须首先具有 python LZ4 和/或 zstandard 绑定。有关更多详细信息,请参阅源代码

  • 对于 LZ4:如果import lz4.block给出ModuleNotFoundError,则继续安装pip install lz4

  • 同样对于 zstandard:pip install zstandard

  • 对于brotli:pip install brotlipy

  • 和 lzo:pip install python-lzo

  • 活泼:pip install python-snappy

于 2020-01-23T05:03:40.583 回答