

# Athena で圧縮を使用する
<a name="compression-formats"></a>

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

## サポートされている圧縮形式
<a name="compression-support-formats"></a>

Athena は以下の圧縮形式をサポートしています。
+ **BZIP2** – Burrows-Wheeler アルゴリズムを使用する形式。
+ **DEFLATE** – [LZSS](https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Storer%E2%80%93Szymanski) および [Huffman コーディング](https://en.wikipedia.org/wiki/Huffman_coding)をベースにした圧縮アルゴリズム。[DEFLATE](https://en.wikipedia.org/wiki/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](https://github.com/lz4/lz4/blob/dev/doc/lz4_Block_format.md)」(LZ4 ブロック形式の説明) を参照してください。
  + **LZ4 Framed** – LZ4 の一般的なフレーミング実装。詳細については、GitHub の「[LZ4 Frame Format Description](https://github.com/lz4/lz4/blob/dev/doc/lz4_Frame_format.md)」(LZ4 フレームフォーマットの説明) を参照してください。
  + **LZ4 Hadoop-Compatible** – LZ4 の Apache Hadoop 向け実装。この実装は、LZ4 圧縮を [BlockCompressorStream.java](https://github.com/apache/hadoop/blob/f67237cbe7bc48a1b9088e990800b37529f1db2a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockCompressorStream.java) クラスでラップします。
+ **LZO** – Lempel–Ziv–Oberhumer アルゴリズムを使用する形式。これは、データの最大圧縮率ではなく、圧縮と解凍の高速化に焦点を当てています。LZO には以下の 2 つの実装があります。
  + **Standard LZO** – 詳細については、Oberhumer ウェブサイトで LZO の「[abstract](http://www.oberhumer.com/opensource/lzo/#abstract)」(抽象化) を参照してください。
  + **LZO Hadoop-Compatible** – LZO アルゴリズムを [BlockCompressorStream.java](https://github.com/apache/hadoop/blob/f67237cbe7bc48a1b9088e990800b37529f1db2a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockCompressorStream.java) クラスでラップした実装。
+ **SNAPPY** – Lempel-Ziv 77 (LZ7) ファミリー内の圧縮アルゴリズムの一部。SNAPPY は、データの最大圧縮率ではなく、圧縮と解凍の高速化に焦点を当てています。
+ **ZLIB** – ORC データストレージ形式のファイルで、書き込み圧縮にデフォルトで使用する、DEFLATE をベースにした圧縮形式 詳細については、GitHub の「[zlib](https://github.com/madler/zlib)」ページを参照してください。
+  **ZSTD** – [Zstandard real-time data compression algorithm](http://facebook.github.io/zstd/) は、高い圧縮率を実現する高速圧縮アルゴリズムです。Zstandard (ZSTD) ライブラリは、BSD ライセンスにより、オープンソースソフトウェアとして提供されています。ZSTD は Iceberg テーブル用のデフォルトの圧縮です。ZSTD 圧縮データの書き込み時、Athena はディフォルトで ZSTD 圧縮レベル 3 を使用します。Athena での ZSTD 圧縮レベルの使用の詳細については、「[ZSTD 圧縮レベルを使用する](compression-support-zstd-levels.md)」を参照してください。

**注記**  
Athena は、LZ4 形式または LZO 形式で圧縮された Parquet ファイルの書き込みをサポートしていません。これらの圧縮形式の読み取りはサポートされています。

## 圧縮形式を指定する
<a name="compression-support-specifying-compression-formats"></a>

CREATE TABLE または CTAS ステートメントを記述する際に圧縮プロパティを指定することで、Athena がこれらのテーブルへの書き込みに使用する圧縮タイプを指定できます。
+ CTAS については、「[CTAS テーブルのプロパティ](create-table-as.md#ctas-table-properties)」を参照してください。例については「[CTAS クエリの例](ctas-examples.md)」を参照してください。
+ CREATE TABLE については、「[ALTER TABLE SET TBLPROPERTIES](alter-table-set-tblproperties.md)」で圧縮テーブルのプロパティ一覧を参照してください。

## 圧縮なしを指定する
<a name="compression-support-specifying-no-compression"></a>

CREATE TABLE 文は、非圧縮ファイルの書き込みをサポートします。非圧縮ファイルを書き込むには、次の構文を使用します。
+ CREATE TABLE (テキストファイルまたは JSON) – `TBLPROPERTIES` で、`write.compression = NONE` を指定します。
+ CREATE TABLE (Parquet) – `TBLPROPERTIES` で、`parquet.compression = UNCOMPRESSED` を指定します。
+ CREATE TABLE (ORC) – `TBLPROPERTIES` で、`orc.compress = NONE` を指定します。

## 注意事項とリソース
<a name="compression-support-notes-and-resources"></a>
+ 現在、大文字のファイル拡張子 (`.GZ` または `.BZIP2` など) は、Athena では認識されません。大文字のファイル拡張子を持つデータセットを使用しないようにするか、データファイルの拡張子を小文字に変更します。
+ CSV、TSV、および JSON のデータについては、Athena がファイル拡張子から圧縮タイプを判断します。ファイル拡張子がない場合、Athena はデータを非圧縮のプレーンテキストとして扱います。データが圧縮されている場合は、ファイル名に圧縮の拡張子 (`gz` など) が含まれていることを確認します。
+ ZIP ファイル形式はサポートされていません。
+ Athena からの Amazon Data Firehose ログのクエリでサポートされる形式には、GZIP 圧縮、または SNAPPY 圧縮を使用する ORC ファイルが含まれます。
+ 圧縮の使用の詳細については、「AWS Big·Data·ブログ」の記事「[Amazon Athena のパフォーマンスチューニング Tips トップ 10](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/)」のセクション 3「ファイルを圧縮・分割する」 を参照してください。

**Topics**
+ [圧縮形式を指定する](#compression-support-specifying-compression-formats)
+ [圧縮なしを指定する](#compression-support-specifying-no-compression)
+ [注意事項とリソース](#compression-support-notes-and-resources)
+ [Hive テーブル圧縮](compression-support-hive.md)
+ [Iceberg テーブル圧縮](compression-support-iceberg.md)
+ [ZSTD 圧縮レベル](compression-support-zstd-levels.md)