使用ZSTD壓縮層級 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用ZSTD壓縮層級

Zstandard 即時資料壓縮演算法是一種提供高壓縮比的快速壓縮演算法。Zstandard (ZSTD) 程式庫是開放原始碼軟體,並使用BSD授權。Athena 支援讀取和寫入ZSTD壓縮ORC、實木複合地板和文字檔資料。

您可以根據需要使用ZSTD壓縮級別來調整壓縮比和速度。該ZSTD庫支持從 1 到 22 的壓縮級別。Athena 預設使用ZSTD壓縮等級 3。

壓縮級別在壓縮速度和達到的壓縮量之間提供了細微的權衡。壓縮級別越低,速度越快,但檔案大小更大。例如,如果速度最重要,則可以使用級別 1,如果大小最重要,則可以使用級別 22。級別 3 適用於許多使用案例,且為預設值。請謹慎使用大於 19 的級別,因為這些級別需要更多的記憶體。該ZSTD庫還提供負壓縮級別,可擴展壓縮速度和比率的範圍。如需詳細資訊,請參閱 Z 標準壓縮RFC

豐富的壓縮級別為微調提供了大量機會。但是,請確保在決定壓縮級別時測量資料並考慮權衡。建議使用預設級別 3,或 6 到 9 之間的級別,以便在壓縮速度與壓縮資料大小之間取得合理的權衡。對於大小最重要且壓縮速度不是問題的情況,預留級別 20 或更高。

考量與限制

在 Athena 使用ZSTD壓縮等級時,請考慮以下幾點。

  • 此ZSTDcompression_level屬性僅在 Athena 引擎版本 3 中受支援。

  • ALTER TABLECREATE TABLECREATE TABLE AS (CTAS) 和UNLOAD陳述式支援ZSTDcompression_level屬性。

  • compression_level 屬性是選用屬性。

  • 只有ZSTD壓縮才支援此compression_level屬性。

  • 可能的壓縮級別為 1 到 22。

  • 預設壓縮級別為 3。

如需有關 Athena 中 Apache Hive ZSTD 壓縮支援的資訊,請參閱使用蜂巢表壓縮。如需有關 Athena 阿帕奇冰山ZSTD壓縮支援的資訊,請參閱使用冰山表壓縮

指定ZSTD壓縮層級

若要指定ALTER TABLE、、CREATE TABLEUNLOAD陳述式的ZSTD壓縮層級,請使用compression_level屬性。CREATE TABLE AS若要指定ZSTD壓縮本身,您必須使用陳述式語法所使用的個別壓縮屬性。

ALTER TABLE SET TBLPROPERTIES陳述式SET TBLPROPERTIES子句中,使用'write.compression' = ' ZSTD'或指定ZSTD壓縮'parquet.compression' = 'ZSTD'。然後使用 compression_level 屬性來指定 1 到 22 之間的值 (例如,'compression_level' = '5')。如果您沒有指定壓縮級別屬性,則壓縮級別會預設為 3。

範例

下列範例會修改資料表,existing_table使用 Parquet 檔案格式搭配ZSTD壓縮和ZSTD壓縮層級 4。請注意,在TBLPROPERTIES子句中,壓縮級別值必須輸入為字符串而不是整數,因此必須用單引號或雙引號括起來。

ALTER TABLE existing_table SET TBLPROPERTIES ('parquet.compression' = 'ZSTD', 'compression_level' = '4')

CREATE TABLE陳述式TBLPROPERTIES子句中,指定 'write.compression' = 'ZSTD''parquet.compression' = 'ZSTD',然後使用compression_level = compression_level並指定介於 1 到 22 之間的值做為字串。如果未指定 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',然後使用 1 到 22 之間的值,compression_level = compression_level並將其指定為整數。如果未指定 compression_level 屬性,則預設壓縮級別為 3。

範例

下列CTAS範例會將 Parquet 指定為使用ZSTD壓縮層級 4 的壓縮檔案格式。請注意,在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 = compression_level和指定介於 1 到 22 之間的值做為整數。如果未指定 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)