ZSTD 圧縮レベルを使用する
Zstandard リアルタイムデータ圧縮アルゴリズム
ZSTD 圧縮レベルを使用すると、要件に応じて圧縮率や速度を調整できます。ZSTD ライブラリは、1 から 22 までの圧縮レベルをサポートします。Athena はデフォルトで ZSTD 圧縮レベル 3 を使用しています。
圧縮レベルは、圧縮速度や達成された圧縮量の間の細かいトレードオフを提供します。圧縮レベルが低くなるほど速度は速くなりますが、ファイルサイズは大きくなります。たとえば、速度が最も重要である場合にはレベル 1 を使用し、サイズが最も重要な場合はレベル 22 を使用できます。レベル 3 は多数のユースケースに適しており、デフォルトです。19 以上のレベルは、より多くのメモリを必要とするため、注意してご使用ください。また、ZSTD ライブラリには、圧縮速度と圧縮率の範囲を広げる負の圧縮レベルも用意されています。詳細については、「Zstandard Compression RFC
豊富な圧縮レベルにより、大幅に微調整できる機会が増えます。ただし、圧縮レベルを決定する際には、必ずデータを測定し、そのトレードオフを考慮してください。圧縮速度と圧縮データ サイズの間の合理的なトレードオフのためには、デフォルトレベルである 3 または 6~9 の範囲のレベルを使用することをお勧めします。サイズが最も重要で、圧縮速度が問題にならない場合は、レベル 20 以上を確保します。
考慮事項と制限事項
Athena で ZSTD 圧縮レベルを使用する際は、以下の点を考慮してください。
-
ZTSD
compression_level
プロパティは、Athena エンジンバージョン 3 でのみサポートされます。 -
ZSTD
compression_level
プロパティは、ALTER TABLE
、CREATE TABLE
、CREATE TABLE AS
(CTAS)、およびUNLOAD
ステートメントでサポートされています。 -
compression_level
プロパティはオプションです。 -
compression_level
プロパティは ZSTD 圧縮でのみサポートされます。 -
可能な圧縮レベルは 1~22 です。
-
デフォルトの圧縮レベルは 3 です。
Athena での Apache Hive ZSTD 圧縮サポートの詳細については、「Hive テーブル圧縮を使用する」を参照してください。Athena での Apache Iceberg ZSTD 圧縮のサポートに関する詳細については、「Iceberg テーブル圧縮を使用する」を参照してください。
ZSTD 圧縮レベルを指定する
ALTER TABLE
、CREATE
TABLE
、CREATE TABLE AS
、および UNLOAD
ステートメントの ZSTD 圧縮レベルを指定するには、compression_level
プロパティを使用します。ZSTD 圧縮自体を指定するには、ステートメントの構文が使用する個別の圧縮プロパティを使用する必要があります。
ALTER TABLE SET
TBLPROPERTIES ステートメントの SET
TBLPROPERTIES
句では、'write.compression' = ' ZSTD'
または 'parquet.compression' =
'ZSTD'
を使用して ZSTD 圧縮を指定します。次に、compression_level
プロパティを使用して 1 から 22 までの値を指定します (例: compression_level' = '5'
)。圧縮レベルプロパティを指定しない場合、圧縮レベルはデフォルトで 3 に設定されます。
例
次の例では、テーブル existing_table
を変更して、ZSTD 圧縮および ZSTD 圧縮レベル 4 の Parquet ファイル形式を使用します。TBLPROPERTIES
句では、圧縮レベルの値は整数ではなく文字列として入力する必要があるため、一重引用符または二重引用符で囲む必要があることに留意してください。
ALTER TABLE existing_table SET TBLPROPERTIES ('parquet.compression' = 'ZSTD', 'compression_level' = '4')
CREATE TABLE ステートメントの TBLPROPERTIES
句では、write.compression' =
'ZSTD'
または 'parquet.compression' = 'ZSTD'
を指定してから compression_level =
を使用して、文字列として 1 から 22 までの値を指定します。compression_level
compression_level
プロパティを指定しない場合、デフォルトの圧縮レベルは 3 です。
例
次の例では、ZSTD 圧縮と ZSTD 圧縮レベル 4 を使用して Parquet ファイル形式でテーブルを作成します。
CREATE EXTERNAL TABLE new_table ( `col0` string COMMENT '', `col1` string COMMENT '' ) STORED AS PARQUET LOCATION 's3://amzn-s3-demo-bucket/' TBLPROPERTIES ('write.compression' = 'ZSTD', 'compression_level' = '4')
CREATE TABLE AS ステートメントの WITH
句では、write_compression = 'ZSTD'
または parquet_compression = 'ZSTD'
を指定してから compression_level
=
を使用して、文字列として 1 から 22 までの値を指定します。compression_level
compression_level
プロパティを指定しない場合、デフォルトの圧縮レベルは 3 です。
例
次の CTAS の例では、圧縮レベル 4 の ZSTD 圧縮を使用して、Parquet をファイル形式として指定しています。WITH
句では、圧縮レベルの値は文字列としてではなく整数として指定する必要があることに留意してください。
CREATE TABLE new_table WITH ( format = 'PARQUET', write_compression = 'ZSTD', compression_level = 4) AS SELECT * FROM old_table
UNLOAD ステートメントの WITH
句では、compression = 'ZSTD'
を指定してから compression_level =
を使用して、文字列として 1 から 22 までの値を指定します。compression_level
compression_level
プロパティを指定しない場合、デフォルトの圧縮レベルは 3 です。
例
次の例では、Parquet ファイル形式、ZSTD 圧縮、および ZSTD 圧縮レベル 4 を使用して、クエリ結果を指定された場所にアンロードします。
UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)