Athena で圧縮を使用する - Amazon Athena

Athena で圧縮を使用する

Athena は、複数の圧縮形式を使用するテーブルからの読み込みなど、データの読み書きのためのさまざまな圧縮形式をサポートしています。例えば、一部の Parquet ファイルが Snappy で圧縮されており、他の Parquet ファイルは GZIP で圧縮されているといった、Parquet ファイル形式を使用するテーブル内のデータも、Athena は正常に読み込むことができます。同様なことが ORC、テキストファイル、および JSON のストレージ形式に対しても当てはまります。

Athena は以下の圧縮形式をサポートしています。

  • BZIP2 – Burrows-Wheeler アルゴリズムを使用する形式。

  • DEFLATELZSS および Huffman コーディングをベースにした圧縮アルゴリズム。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 Block Format Description」(LZ4 ブロック形式の説明) を参照してください。

    • LZ4 Framed – LZ4 の一般的なフレーミング実装。詳細については、GitHub の「LZ4 Frame Format Description」(LZ4 フレームフォーマットの説明) を参照してください。

    • LZ4 Hadoop-Compatible – LZ4 の Apache Hadoop 向け実装。この実装は、LZ4 圧縮を BlockCompressorStream.java クラスでラップします。

  • LZO – Lempel–Ziv–Oberhumer アルゴリズムを使用する形式。これは、データの最大圧縮率ではなく、圧縮と解凍の高速化に焦点を当てています。LZO には以下の 2 つの実装があります。

    • Standard LZO – 詳細については、Oberhumer ウェブサイトで LZO の「abstract」(抽象化) を参照してください。

    • LZO Hadoop-Compatible – LZO アルゴリズムを BlockCompressorStream.java クラスでラップした実装。

  • SNAPPY – Lempel-Ziv 77 (LZ7) ファミリー内の圧縮アルゴリズムの一部。SNAPPY は、データの最大圧縮率ではなく、圧縮と解凍の高速化に焦点を当てています。

  • ZLIB – ORC データストレージ形式のファイルで、書き込み圧縮にデフォルトで使用する、DEFLATE をベースにした圧縮形式 詳細については、GitHub の「zlib」ページを参照してください。

  • ZSTDZstandard real-time data compression algorithm は、高い圧縮率を実現する高速圧縮アルゴリズムです。Zstandard (ZSTD) ライブラリは、BSD ライセンスにより、オープンソースソフトウェアとして提供されています。ZSTD は Iceberg テーブル用のデフォルトの圧縮です。ZSTD 圧縮データの書き込み時、Athena はディフォルトで ZSTD 圧縮レベル 3 を使用します。Athena での ZSTD 圧縮レベルの使用の詳細については、「ZSTD 圧縮レベルを使用する」を参照してください。

圧縮形式を指定する

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 を指定します。

注意事項とリソース

  • 現在、大文字のファイル拡張子 (.GZ または .BZIP2 など) は、Athena では認識されません。大文字のファイル拡張子を持つデータセットを使用しないようにするか、データファイルの拡張子を小文字に変更します。

  • CSV、TSV、および JSON のデータについては、Athena がファイル拡張子から圧縮タイプを判断します。ファイル拡張子がない場合、Athena はデータを非圧縮のプレーンテキストとして扱います。データが圧縮されている場合は、ファイル名に圧縮の拡張子 (gz など) が含まれていることを確認します。

  • ZIP ファイル形式はサポートされていません。

  • Athena からの Amazon Data Firehose ログのクエリでサポートされる形式には、GZIP 圧縮、または SNAPPY 圧縮を使用する ORC ファイルが含まれます。

  • 圧縮の使用の詳細については、「AWS Big·Data·ブログ」の記事「Amazon Athena のパフォーマンスチューニング Tips トップ 10」のセクション 3「ファイルを圧縮・分割する」 を参照してください。