Usar níveis de compactação ZSTD
O algoritmo de compactação de dados em tempo real Zstandard
Você pode usar os níveis de compactação ZSTD para ajustar a taxa e a velocidade de compactação de acordo com suas necessidades. A biblioteca ZSTD é compatível com níveis de compactação de 1 a 22. O Athena usa o nível 3 de compactação ZSTD por padrão.
Os níveis de compactação oferecem compensações granulares entre a velocidade e a quantidade de compactação alcançadas. Níveis de compactação mais baixos oferecem maior velocidade, mas tamanhos de arquivo maiores. Por exemplo, você pode usar o nível 1 se a velocidade for mais importante e o nível 22 se o tamanho for mais importante. O nível 3 é adequado para muitos casos de uso e é o padrão. Use níveis maiores que 19 com cuidado, pois eles exigem mais memória. A biblioteca ZSTD também oferece níveis de compactação negativos que ampliam a faixa de velocidade e taxas de compactação. Para obter mais informações, consulte Zstandard Compression RFC
A abundância de níveis de compactação oferece oportunidades substanciais para ajustes finos. No entanto, certifique-se de medir seus dados e considerar as desvantagens ao decidir sobre um nível de compactação. Recomendamos usar o nível padrão de 3 ou um nível na faixa de 6 a 9 para uma compensação razoável entre a velocidade de compactação e o tamanho dos dados compactados. Reserve níveis 20 ou mais para casos em que o tamanho é mais importante e a velocidade de compactação não é uma preocupação.
Considerações e limitações
Ao usar o nível de compactação ZSTD no Athena, acesse os seguintes pontos.
-
A propriedade
compression_level
da ZSTD tem suporte apenas no mecanismo Athena versão 3. -
A propriedade
compression_level
da ZSTD é compatível com as instruçõesALTER TABLE
,CREATE TABLE
,CREATE TABLE AS
(CTAS) eUNLOAD
. -
A propriedade
compression_level
é opcional. -
A propriedade
compression_level
tem suporte apenas para compactação ZSTD. -
Os níveis de compactação possíveis são de 1 a 22.
-
O nível de compactação padrão é 3.
Para obter informações sobre suporte à compactação do Apache Hive ZSTD no Athena, consulte Usar a compactação de tabelas do Hive. Para obter informações sobre suporte à compactação do Apache Iceberg ZSTD no Athena, consulte Usar compactação de tabelas do Iceberg.
Especificar níveis de compactação ZSTD
Para especificar o nível de compactação ZSTD para as instruções ALTER TABLE
, CREATE
TABLE
, CREATE TABLE AS
e UNLOAD
, use a propriedade compression_level
. Para especificar a compactação ZSTD em si, você deve usar a propriedade de compactação individual que a sintaxe da instrução usa.
Na cláusula SET
TBLPROPERTIES
da instrução ALTER TABLE SET
TBLPROPERTIES, especifique a compactação ZSTD usando 'write.compression' = ' ZSTD'
ou 'parquet.compression' =
'ZSTD'
. Em seguida, use a propriedade compression_level
para especificar um valor de 1 a 22 (por exemplo, 'compression_level' = '5'
). Se você não especificar uma propriedade de nível de compactação, o padrão será 3.
Exemplo
O exemplo a seguir modifica a tabela existing_table
para usar o formato de arquivo Parquet com compactação ZSTD nível 4. Observe que na cláusula TBLPROPERTIES
, o valor do nível de compactação deve ser inserido como uma string em vez de um número inteiro e, portanto, deve ser inserido entre aspas simples ou duplas.
ALTER TABLE existing_table SET TBLPROPERTIES ('parquet.compression' = 'ZSTD', 'compression_level' = '4')
Na cláusula TBLPROPERTIES
da instrução CREATE TABLE, especifique 'write.compression' =
'ZSTD'
ou 'parquet.compression' = 'ZSTD'
, e, em seguida, use compression_level =
e especifique um valor de 1 a 22 como string.. Se a propriedade compression_level
compression_level
não for especificada, o nível de compressão padrão será 3.
Exemplo
O exemplo a seguir cria uma tabela no formato de arquivo Parquet usando compactação ZSTD nível 4.
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')
Na cláusula WITH
da instrução CREATE TABLE AS, especifique write_compression = 'ZSTD'
ou parquet_compression = 'ZSTD'
, e, em seguida, use compression_level
=
e especifique um valor de 1 a 22 como um inteiro. Se a propriedade compression_level
compression_level
não for especificada, o nível de compressão padrão será 3.
Exemplo
O exemplo de CTAS a seguir especifica o Parquet como formato de arquivo usando compactação ZSTD nível 4. Observe que, na cláusula WITH
, o valor do nível de compactação deve ser especificado como um número inteiro, não como uma string.
CREATE TABLE new_table WITH ( format = 'PARQUET', write_compression = 'ZSTD', compression_level = 4) AS SELECT * FROM old_table
Na cláusula WITH
da instrução UNLOAD, especifique compression = 'ZSTD'
e, em seguida, use compression_level =
e especifique um valor de 1 a 22 como um inteiro. Se a propriedade compression_level
compression_level
não for especificada, o nível de compressão padrão será 3.
Exemplo
O exemplo a seguir descarrega os resultados da consulta no local especificado usando o formato de arquivo Parquet, a compactação ZSTD e o nível 4 de compactação ZSTD.
UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)