O Athena suporta uma variedade de formatos de compactação para leitura e gravação de dados, incluindo a leitura de uma tabela que usa vários formatos de compactação. Por exemplo, o Athena pode ler com sucesso os dados de uma tabela que usa o formato de arquivo Parquet quando alguns arquivos Parquet são compactados com o Snappy e outros arquivos Parquet são compactados com o GZIP. O mesmo princípio se aplica aos formatos de armazenamento ORC, arquivo de texto e JSON.
O Athena aceita os seguintes formatos de compactação:
-
BZIP2: formato que usa o algoritmo de Burrows-Wheeler.
-
DEFLATE: algoritmo de compactação de dados baseado em codificação LZSS
e Huffman . Deflate só é relevante para o formato de arquivo Avro. -
GZIP: algoritmo de compactação baseado em Deflate. Para tabelas do Hive no mecanismo do Athena versões 2 e 3, e tabelas do Iceberg no mecanismo do Athena versão 2, o GZIP é o formato de compactação de gravação padrão para arquivos nos formatos de armazenamento de arquivos Parquet e de texto. Arquivos no formato
tar.gz
não são suportados. -
LZ4: este membro da família Lempel-Ziv 77 (LZ7) também se concentra na velocidade de compactação e descompactação, não na compactação máxima dos dados. O LZ4 tem os seguintes formatos de enquadramento:
-
LZ4 Raw/Unframed: uma implementação sem quadros padrão do formato de compactação de blocos LZ4. Para obter mais informações, consulte LZ4 Block Format Description
(Descrição do formato de bloco LZ4) no GitHub. -
LZ4 framed: a implementação de enquadramento usual do LZ4. Para obter mais informações, consulte LZ4 Frame Format Description
(Descrição do formato de quadro LZ4) no GitHub. -
LZ4 Hadoop-compatible: a implementação do Apache Hadoop do LZ4. Esta implementação envolve a compactação LZ4 com a classe BlockCompressorStream.java
.
-
-
LZO: formato que usa o algoritmo Lempel-Ziv-Oberhumer, que se concentra na alta velocidade de compactação e descompactação, não na compactação máxima dos dados. O LZO tem duas implementações:
-
Standard LZO: para obter mais informações, consulte o resumo
do LZO no site da Oberhumer. -
LZO Hadoop-compatible: esta implementação envolve o algoritmo LZO com a classe BlockCompressorStream.java
.
-
-
SNAPPY: algoritmo de compactação que faz parte da família Lempel-Ziv 77 (LZ7). O Snappy se concentra na alta velocidade de compactação e descompactação, não na compactação máxima do dados.
-
ZLIB: com base no Deflate, ZLIB é o formato de compactação de gravação padrão para arquivos no formato de armazenamento de dados ORC. Para obter mais informações, consulte a página zib
no GitHub. -
ZSTD: o algoritmo de compactação de dados Zstandard
é um algoritmo de compactação rápida que fornece altas taxas de compactação. A biblioteca Zstandard (ZSTD) é fornecida como software de código aberto usando uma licença BSD. O ZSTD é a compactação padrão para tabelas do Iceberg. O Athena usa o nível 3 de compactação ZSTD por padrão quando grava dados compactados como ZSTD. Para obter mais informações sobre o uso de níveis de compactação ZSTD no Athena, consulte Usar níveis de compactação ZSTD.
nota
O Athena não é compatível com gravação de arquivos compactados Parquet nos formatos LZ4 ou LZO. Ainda há compatibilidade com leituras para esses formatos de compactação.
Especificar formatos de compactação
Ao escrever instruções CREATE TABLE ou CTAS, você pode especificar propriedades de compactação que especifiquem o tipo de compactação a ser usado quando o Athena gravar nessas tabelas.
-
Para CTAS, consulte Propriedades da tabela CTAS. Para ver exemplos, consulte Exemplos de consultas CTAS.
-
Para CREATE TABLE, consulte ALTER TABLE SET TBLPROPERTIES para obter uma lista de propriedades da tabela de compactação.
Especificar nenhuma compactação
As instruções CREATE TABLE são compatíveis com a gravação de arquivos descompactados. Para gravar arquivos descompactados, use a seguinte sintaxe:
-
CREATE TABLE (arquivo de texto ou JSON): Em
TBLPROPERTIES
, especifiquewrite.compression = NONE
. -
CREATE TABLE (Parquet): em
TBLPROPERTIES
, especifiqueparquet.compression = UNCOMPRESSED
. -
CREATE TABLE (ORC): em
TBLPROPERTIES
, especifiqueorc.compress = NONE
.
Observações e recursos
-
Atualmente, extensões de arquivos em letras maiúsculas, como
.GZ
ou.BZIP2
, não são reconhecidas pelo Athena. Evite usar conjuntos de dados com extensões de arquivos em letras maiúsculas ou altere essas extensões para letras minúsculas. -
Para dados em CSV, TSV e JSON, o Athena determina o tipo de compactação com base na extensão do arquivo. Se nenhuma extensão de arquivo estiver presente, o Athena tratará os dados como texto simples sem compactação. Se os dados estiverem compactados, certifique-se de que o nome do arquivo inclua a extensão de compactação, como
gz
. -
O formato de arquivo ZIP não é compatível.
-
Para consultar os logs do Amazon Data Firehose usando o Athena, os formatos compatíveis incluem a compactação GZIP ou os arquivos ORC com compactação SNAPPY.
-
Para obter mais informações sobre como usar a compactação, consulte a seção 3 (“Compress and split files” [Compactar e dividir arquivos]) da publicação do blog da AWS sobre big data: Top 10 performance tuning tips for Amazon Athena
(As dez melhores dicas de ajuste de performance do Amazon Athena).