Usar níveis de compressão ZSTD no Athena - Amazon Athena

Usar níveis de compressão ZSTD no Athena

O algoritmo de compressão de dados em tempo real Zstandard é um algoritmo de compressão rápida que fornece altas taxas de compressão. A biblioteca Zstandard (ZSTD) é um software de código aberto e usa uma licença BSD. O Athena oferece suporte a leitura e a gravação de dados nos formatos ORC, Parquet e arquivo de texto compactados como ZSTD.

Você pode usar os níveis de compressão ZSTD para ajustar a taxa e a velocidade de compressão de acordo com suas necessidades. A biblioteca ZSTD é compatível com níveis de compressão de 1 a 22. O Athena usa o nível 3 de compressão ZSTD por padrão.

Os níveis de compressão oferecem compensações granulares entre a velocidade e a quantidade de compressão alcançadas. Níveis de compressã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 compressão negativos que ampliam a faixa de velocidade e taxas de compressão. Para obter mais informações, consulte Zstandard Compression RFC.

A abundância de níveis de compressã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 compressã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 compressã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 compressão não é uma preocupação.

Considerações e limitações

Ao usar o nível de compressã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ções ALTER TABLE, CREATE TABLE, CREATE TABLE AS (CTAS) e UNLOAD.

  • A propriedade compression_level é opcional.

  • A propriedade compression_level tem suporte apenas para compressão ZSTD.

  • Os níveis de compressão possíveis são de 1 a 22.

  • O nível de compressão padrão é 3.

Para obter informações sobre suporte à compactação do Apache Hive ZSTD no Athena, consulte Suporte à compressão de tabelas do Hive por formato de arquivo. Para obter informações sobre suporte à compactação do Apache Iceberg ZSTD no Athena, consulte Suporte à compressão de tabelas do Iceberg por formato de arquivo.

Especificar os níveis de compressão ZSTD

Para especificar o nível de compressão ZSTD para as instruções ALTER TABLE, CREATE TABLE, CREATE TABLE AS e UNLOAD, use a propriedade compression_level. Para especificar a compressão ZSTD em si, você deve usar a propriedade de compressão individual que a sintaxe da instrução usa.

ALTER TABLE SET TBLPROPERTIES

Na cláusula SET TBLPROPERTIES da instrução ALTER TABLE SET TBLPROPERTIES, especifique a compressã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 compressão, o padrão será 3.

Exemplo

O exemplo a seguir modifica a tabela existing_table para usar o formato de arquivo Parquet com compressão ZSTD nível 4. O valor do nível de compactação deve ser inserido como uma string em vez de um número inteiro.

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

CRIAR TABELA

Na cláusula TBLPROPERTIES da instrução CREATE TABLE, especifique 'write.compression' = 'ZSTD' ou 'parquet.compression' = 'ZSTD', em seguida, use compression_level = compression_level e especifique um valor de 1 a 22. Se a propriedade 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 compressão ZSTD nível 4.

CREATE EXTERNAL TABLE new_table ( `col0` string COMMENT '', `col1` string COMMENT '' ) STORED AS PARQUET LOCATION 's3://DOC-EXAMPLE-BUCKET/' TBLPROPERTIES ('write.compression' = 'ZSTD', 'compression_level' = 4)

CREATE TABLE AS (CTAS)

Na cláusula WITH da instrução CREATE TABLE AS, especifique write_compression = 'ZSTD' ou parquet_compression = 'ZSTD', em seguida, use compression_level = compression_level e especifique um valor de 1 a 22. Se a propriedade 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 compressão ZSTD nível 4.

CREATE TABLE new_table WITH ( format = 'PARQUET', write_compression = 'ZSTD', compression_level = 4) AS SELECT * FROM old_table

UNLOAD

Na cláusula WITH da instrução UNLOAD, especifique compression = 'ZSTD', em seguida, use compression_level = compression_level e especifique um valor de 1 a 22. Se a propriedade 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 compressão ZSTD e o nível 4 de compressão ZSTD.

UNLOAD (SELECT * FROM old_table) TO 's3://DOC-EXAMPLE-BUCKET/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)