【发布时间】:2018-12-14 15:56:07
【问题描述】:
我正在使用 spark 以 parquet 格式在 Hadoop 和 hive 上编写数据。我想启用压缩,但我只能找到 2 种压缩类型——大部分时间都在使用 snappy 和 Gzip。 parquet 是否也支持任何其他压缩,例如 Deflate 和 lzo?
【问题讨论】:
标签: apache-spark hadoop hive compression parquet
我正在使用 spark 以 parquet 格式在 Hadoop 和 hive 上编写数据。我想启用压缩,但我只能找到 2 种压缩类型——大部分时间都在使用 snappy 和 Gzip。 parquet 是否也支持任何其他压缩,例如 Deflate 和 lzo?
【问题讨论】:
标签: apache-spark hadoop hive compression parquet
来自Spark source code, branch 2.1:
您可以设置以下 Parquet 特定选项来编写 Parquet 文件:
compression(默认为spark.sql.parquet.compression.codec中指定的值):压缩编解码器时使用 保存到文件。这可以是已知的不区分大小写的缩短之一 名称(none、snappy、gzip和lzo)。
这将 覆盖spark.sql.parquet.compression.codec
...
总体支持的压缩是:none、uncompressed、snappy、gzip、lzo、brotli、lz4 和 zstd
【讨论】:
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
}
Snappy 和 Gzip 是最常用的,所有实现都支持。 LZ4 和 ZSTD 比前两者产生更好的结果,但它们是对格式的一个相当新的补充,因此它们仅在某些实现的较新版本中受支持。
【讨论】: