parquet支持哪些压缩类型?

15

我正在使用Spark将Hadoop和Hive中的数据以parquet格式写入。我希望启用压缩,但我只能找到两种常用的压缩类型 - snappy和Gzip。Parquet是否支持其他压缩类型,如Deflate和lzo?

2个回答

20

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比前两者产生更好的结果,但是它们是该格式的一个相对较新的补充,因此只有在某些实现的更新版本中才支持它们。


10

在 Spark 2.1 中

Spark源代码,分支2.1 中:

您可以为写入Parquet文件设置以下特定于Parquet的选项:

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

在 Spark 2.4 / 3.0 中

总体支持的压缩方式包括:noneuncompressedsnappygziplzobrotlilz4zstd


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接