【问题标题】:compression option in fastparquet is not consistentfastparquet 中的压缩选项不一致
【发布时间】:2020-05-09 07:38:30
【问题描述】:

根据project page of fastparquetfastparquet支持多种压缩方式

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

snappy (aka python-snappy)
lzo
brotli
lz4
zstandard

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

但是在fastparquet.write的文档中

压缩应用于每一列,例如GZIP 或 SNAPPY 或 dict 像 {"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 与所有项目页面声明的压缩算法一起使用?

【问题讨论】:

    标签: python pandas compression fastparquet


    【解决方案1】:

    是的,您可能缺少一些软件包。您的系统必须首先具有 python LZ4 和/或 zstandard 绑定。详情请见the source code

    • 对于 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

    【讨论】:

    • 非常感谢!按照您的建议安装所有软件包后。现在fastparquet 有选项['BROTLI', 'GZIP', 'LZ4', 'LZO', 'SNAPPY', 'UNCOMPRESSED', 'ZSTD']
    • 我发现源代码有问题。看来压缩级别只能在GZIP模式下可控。
    猜你喜欢
    • 1970-01-01
    • 2018-11-20
    • 2010-11-25
    • 2017-07-03
    • 2018-03-26
    • 1970-01-01
    • 2010-10-13
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多