在 Athena 中使用压缩 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Athena 中使用压缩

Athena 支持多种用于读取和写入数据的压缩格式,例如从使用多种压缩格式的表中进行读取。例如,当某些 Parquet 文件使用 Snappy 压缩而其他 Parquet 文件使用 GZIP 压缩时,Athena 可以成功读取使用 Parquet 文件格式的表中的数据。同样的原则适用于 ORC、文本文件和 JSON 存储格式。

Athena 支持以下压缩格式:

  • BZIP2 – 使用 Burrows-Wheeler 算法的格式。

  • DEFLATE – 基于 LZSSHuffman 编码的压缩算法。Deflate 仅与 Avro 文件格式相关。

  • GZIP – 基于 Deflate 的压缩算法。对于 Athena 引擎版本 2 和 3 中的 Hive 表,以及 Athena 引擎版本 2 中的 Iceberg 表,GZIP 是 Parquet 和文本文件存储格式文件的默认写入压缩格式。不支持 tar.gz 格式的文件。

  • LZ4 – 属于 Lempel-Ziv 77 (LZ7) 系列,并且也侧重于压缩和解压缩速度,而非对数据的最大限度压缩。LZ4 具有以下成帧格式:

    • LZ4 Raw/Unframed – LZ4 数据块压缩格式的标准无帧实现。有关更多信息,请参阅 GitHub 上的 LZ4 数据块格式说明

    • LZ4 Framed – 常见的 LZ4 成帧实现。有关更多信息,请参阅 GitHub 上的 LZ4 帧格式说明

    • LZ4 Hadoop-Compatible – LZ4 的 Apache Hadoop 实现。此实现使用 BlockCompressorStream.java 类封装 LZ4 压缩。

  • LZO – 使用 Lempel–Ziv–Oberhumer 算法的格式,该算法侧重于高速压缩和解压缩,而非对数据的最大限度压缩。LZO 具有两个实现:

    • Standard LZO – 有关更多信息,请参阅 Oberhumer 网站上的 LZO 摘要

    • LZO Hadoop-Compatible – 此实现使用 BlockCompressorStream.java 类封装 LZO 算法。

  • SNAPPY – 属于 Lempel-Ziv 77 (LZ7) 系列的压缩算法。Snappy 侧重于高速压缩和解压速度,而非对数据的最大限度压缩。

  • ZLIB – 基于 Deflate,ZLIB 是 ORC 数据存储格式文件的默认写入压缩格式。有关更多信息,请参阅 GitHub 上的 zlib 页面。

  • ZSTDZstandard 实时数据压缩算法是一种具有高压缩率的快速压缩算法。Zstandard(ZSTD)库作为使用 BSD 许可证的开源软件提供。ZSTD 是 Iceberg 表的默认压缩格式。在写入 ZSTD 压缩数据时,Athena 默认使用 ZSTD 压缩级别 3。有关在 Athena 中使用 ZSTD 压缩级别的更多信息,请参阅 使用 ZSTD 压缩级别

注意

Athena 不支持写入以 LZ4 或 LZO 格式压缩的 Parquet 文件。我们支持读取这些压缩格式。

指定压缩格式

写入 CREATE TABLE 或 CTAS 语句时,您可以指定压缩属性,该属性可指定 Athena 写入这些表时要使用的压缩类型。

指定无压缩

CREATE TABLE 语句支持写入未压缩的文件。要写入未压缩的文件,请使用以下语法:

  • CREATE TABLE(文本文件或 JSON)– 在 TBLPROPERTIES 中,请指定 write.compression = NONE

  • CREATE TABLE (Parquet) – 在 TBLPROPERTIES 中,请指定 parquet.compression = UNCOMPRESSED

  • CREATE TABLE (ORC) – 在 TBLPROPERTIES 中,请指定 orc.compress = NONE

注释和资源

  • 目前,Athena 无法识别大写文件扩展名,例如 .GZ.BZIP2。避免使用包含大写文件扩展名的数据集,或将数据文件扩展名重命名为小写。

  • 对于 CSV、TSV 和 JSON 格式的数据,Athena 根据文件扩展名确定压缩类型。如果不存在文件扩展名,则 Athena 将数据视为未压缩的纯文本。如果您的数据已压缩,请确保文件名包含压缩扩展名,例如 gz

  • 不支持 ZIP 文件格式。

  • 对于从 Athena 查询 Amazon Data Firehose 日志,支持的格式包括 GZIP 压缩文件或采用 SNAPPY 压缩的 ORC 文件。

  • 有关使用压缩的更多信息,请参阅 Amazon 大数据博客文章 Top 10 performance tuning tips for Amazon Athena(Amazon Athena 的 10 大性能优化技巧)中的第 3 部分(“压缩和拆分文件”)。