【问题标题】:How to compress parquet file with zstandard using pandas如何使用熊猫使用 zstandard 压缩镶木地板文件
【发布时间】:2019-10-28 16:54:09
【问题描述】:

我正在使用 pandas 使用以下命令将数据帧转换为 .parquet 文件:

df.to_parquet(file_name, engine='pyarrow', compression='gzip')

我需要使用 zstandard 作为压缩算法,但上面的函数只接受 gzip、snappy 和 brotli。我试过有没有办法在这个函数中包含 zstd ?如果没有,我怎么能用其他包做到这一点?我尝试使用zstandard,但它似乎只接受类似字节的对象。

【问题讨论】:

    标签: python pandas dataframe zstandard


    【解决方案1】:

    我通常使用 zstandard 作为我的数据帧的压缩算法。

    这是我用来编写这些拼花文件的代码(有点简化):

    import pandas as pd
    import pyarrow.parquet as pq
    import pyarrow as pa
    
    parquetFilename = "test.parquet"
    
    df = pd.DataFrame(
        {
            "num_legs": [2, 4, 8, 0],
            "num_wings": [2, 0, 0, 0],
            "num_specimen_seen": [10, 2, 1, 8],
        },
        index=["falcon", "dog", "spider", "fish"],
    )
    
    df = pa.Table.from_pandas(df)
    pq.write_table(df, parquetFilename, compression="zstd")
    

    并阅读这些镶木地板文件:

    import pandas as pd
    import pyarrow.parquet as pq
    import pyarrow as pa
    
    parquetFilename = "test.parquet"
    df = pq.read_table(parquetFilename)
    df = df.to_pandas()
    

    有关详细信息,请参阅以下网站了解更多信息:

    终于为blog post I wrote 提供了一个无耻的插件。它是关于 zstandard 的速度与空间平衡以及使用 pyarrow 在 parquet 文件中的 snappy 压缩。它与您的问题相关,并包含一些在 zstandard 中读取和写入 parquet 文件的更多“真实世界”代码示例。实际上,我也会很快写一篇后续文章。如果您有兴趣,请告诉我。

    【讨论】:

      【解决方案2】:

      好像还不支持:

      https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_parquet.html

      compression{‘snappy’, ‘gzip’, ‘brotli’, None}, 默认 ‘snappy’ 名称 要使用的压缩。使用 None 表示不压缩。

      【讨论】:

        猜你喜欢
        • 2021-09-14
        • 2022-11-24
        • 2020-01-16
        • 2019-10-19
        • 2018-12-01
        • 1970-01-01
        • 2019-05-27
        • 1970-01-01
        • 2022-11-03
        相关资源
        最近更新 更多