本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用ZSTD壓縮層級
Zstandard 即時資料壓縮演算法
您可以根據需要使用ZSTD壓縮級別來調整壓縮比和速度。該ZSTD庫支持從 1 到 22 的壓縮級別。Athena 預設使用ZSTD壓縮等級 3。
壓縮級別在壓縮速度和達到的壓縮量之間提供了細微的權衡。壓縮級別越低,速度越快,但檔案大小更大。例如,如果速度最重要,則可以使用級別 1,如果大小最重要,則可以使用級別 22。級別 3 適用於許多使用案例,且為預設值。請謹慎使用大於 19 的級別,因為這些級別需要更多的記憶體。該ZSTD庫還提供負壓縮級別,可擴展壓縮速度和比率的範圍。如需詳細資訊,請參閱 Z 標準壓縮RFC
豐富的壓縮級別為微調提供了大量機會。但是,請確保在決定壓縮級別時測量資料並考慮權衡。建議使用預設級別 3,或 6 到 9 之間的級別,以便在壓縮速度與壓縮資料大小之間取得合理的權衡。對於大小最重要且壓縮速度不是問題的情況,預留級別 20 或更高。
考量與限制
在 Athena 使用ZSTD壓縮等級時,請考慮以下幾點。
-
此ZSTD
compression_level
屬性僅在 Athena 引擎版本 3 中受支援。 -
ALTER TABLE
、CREATE TABLE
、CREATE TABLE AS
(CTAS) 和UNLOAD
陳述式支援ZSTDcompression_level
屬性。 -
compression_level
屬性是選用屬性。 -
只有ZSTD壓縮才支援此
compression_level
屬性。 -
可能的壓縮級別為 1 到 22。
-
預設壓縮級別為 3。
如需有關 Athena 中 Apache Hive ZSTD 壓縮支援的資訊,請參閱使用蜂巢表壓縮。如需有關 Athena 阿帕奇冰山ZSTD壓縮支援的資訊,請參閱使用冰山表壓縮。
指定ZSTD壓縮層級
若要指定ALTER TABLE
、、CREATE
TABLE
和UNLOAD
陳述式的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 =
並指定介於 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'
,然後使用 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 =
和指定介於 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)