Parquet 支持哪些压缩类型

Use*_*rty 4 compression hadoop hive apache-spark parquet

我正在使用 spark 以镶木地板格式在 Hadoop 和 hive 上编写数据。我想启用压缩,但我只能找到 2 种压缩类型 - 大多数时候使用 snappy 和 Gzip。Parquet 是否还支持任何其他压缩,如 Deflate 和 lzo?

Uwe*_*orn 9

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

/**
 * 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
}
Run Code Online (Sandbox Code Playgroud)

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

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


Sam*_*ter 7

在 Spark 2.1 中

Spark 源代码,分支 2.1

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

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

在 Spark 2.4 / 3.0

整体支持compresssions是:noneuncompressedsnappygziplzobrotlilz4,和zstd