【问题标题】:What are the compression types supported in parquetparquet 支持哪些压缩类型
【发布时间】:2018-12-14 15:56:07
【问题描述】:

我正在使用 spark 以 parquet 格式在 Hadoop 和 hive 上编写数据。我想启用压缩,但我只能找到 2 种压缩类型——大部分时间都在使用 snappy 和 Gzip。 parquet 是否也支持任何其他压缩,例如 Deflate 和 lzo?

【问题讨论】:

    标签: apache-spark hadoop hive compression parquet


    【解决方案1】:

    在 Spark 2.1 中

    来自Spark source code, branch 2.1

    您可以设置以下 Parquet 特定选项来编写 Parquet 文件:

    compression(默认为spark.sql.parquet.compression.codec 中指定的值):压缩编解码器时使用 保存到文件。这可以是已知的不区分大小写的缩短之一 名称(nonesnappygziplzo)。
    这将 覆盖spark.sql.parquet.compression.codec
    ...

    在 Spark 2.4 / 3.0 中

    总体支持的压缩是:noneuncompressedsnappygziplzobrotlilz4zstd

    【讨论】:

      【解决方案2】:

      Apache Parquet 支持的压缩类型在 parquet-format 存储库中指定:

      /**
       * Supported compression algorithms.
       *
       * Codecs added in 2.4 can be read by readers based on 2.4 and later.
       * Codec support may vary between readers based on the format version and
       * libraries available at runtime. Gzip, Snappy, and LZ4 codecs are
       * widely available, while Zstd and Brotli require additional libraries.
       */
      enum CompressionCodec {
        UNCOMPRESSED = 0;
        SNAPPY = 1;
        GZIP = 2;
        LZO = 3;
        BROTLI = 4; // Added in 2.4
        LZ4 = 5;    // Added in 2.4
        ZSTD = 6;   // Added in 2.4
      }
      

      https://github.com/apache/parquet-format/blob/54e6133e887a6ea90501ddd72fff5312b7038a7c/src/main/thrift/parquet.thrift#L461

      Snappy 和 Gzip 是最常用的,所有实现都支持。 LZ4 和 ZSTD 比前两者产生更好的结果,但它们是对格式的一个相当新的补充,因此它们仅在某些实现的较新版本中受支持。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-20
        • 2014-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-10
        相关资源
        最近更新 更多