Athena は、複数の圧縮形式を使用するテーブルからの読み込みなど、データの読み書きのためのさまざまな圧縮形式をサポートしています。例えば、一部の Parquet ファイルが Snappy で圧縮されており、他の Parquet ファイルは GZIP で圧縮されているといった、Parquet ファイル形式を使用するテーブル内のデータも、Athena は正常に読み込むことができます。同様なことが ORC、テキストファイル、および JSON のストレージ形式に対しても当てはまります。
Athena は以下の圧縮形式をサポートしています。
-
BZIP2 – Burrows-Wheeler アルゴリズムを使用する形式。
-
DEFLATE – LZSS
および 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
」ページを参照してください。 -
ZSTD – Zstandard real-time data compression algorithm
は、高い圧縮率を実現する高速圧縮アルゴリズムです。Zstandard (ZSTD) ライブラリは、BSD ライセンスにより、オープンソースソフトウェアとして提供されています。ZSTD は Iceberg テーブル用のデフォルトの圧縮です。ZSTD 圧縮データの書き込み時、Athena はディフォルトで ZSTD 圧縮レベル 3 を使用します。Athena での ZSTD 圧縮レベルの使用の詳細については、「ZSTD 圧縮レベルを使用する」を参照してください。
注記
Athena は、LZ4 形式または LZO 形式で圧縮された Parquet ファイルの書き込みをサポートしていません。これらの圧縮形式の読み取りはサポートされています。
圧縮形式を指定する
CREATE TABLE または CTAS ステートメントを記述する際に圧縮プロパティを指定することで、Athena がこれらのテーブルへの書き込みに使用する圧縮タイプを指定できます。
-
CTAS については、「CTAS テーブルのプロパティ」を参照してください。例については、「CTAS クエリの例」を参照してください。
-
CREATE TABLE については、「ALTER TABLE SET TBLPROPERTIES」で圧縮テーブルのプロパティ一覧を参照してください。
圧縮なしを指定する
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「ファイルを圧縮・分割する」 を参照してください。