Como posso armazenar uma saída de consulta do Amazon Athena em um formato diferente de CSV, como um formato compactado?

3 minuto de leitura
0

Quero armazenar os resultados da consulta do Amazon Athena em um formato diferente de CSV, como JSON ou um formato compactado.

Resolução

O Athena suporta somente arquivos de saída CSV. A consulta UNLOAD grava os resultados da consulta de uma instrução SELECT no formato de dados especificado. Os formatos compatíveis com UNLOAD incluem Apache Parquet, ORC, Apache Avro e JSON. CSV é o único formato de saída usado pela consulta Athena SELECT, mas você pode usar UNLOAD para gravar a saída de uma consulta SELECT nos formatos compatíveis com UNLOAD. Embora você possa usar a instrução CTAS para gerar dados em formatos diferentes de CSV, essas instruções também exigem a criação de uma tabela no Athena. A instrução UNLOAD é útil quando você deseja gerar os resultados de uma consulta SELECT em um formato não CSV, mas não exige a tabela associada. Por exemplo, um aplicativo downstream pode exigir que os resultados de uma consulta SELECT estejam no formato JSON, e o Parquet ou o ORC podem oferecer uma vantagem de desempenho em relação ao CSV se você pretende usar os resultados da consulta SELECT para análises adicionais.

Para armazenar arquivos de saída da consulta em um formato diferente, use uma consulta CREATE TABLE AS SELECT (CTAS) e configure a propriedade format. Depois que a consulta for concluída, descarte a tabela CTAS. Lembre-se do seguinte:

  • Você pode definir format como ORC, PARQUET, AVRO, JSON ou TEXTFILE. Se você não especificar um formato para a consulta CTAS, o Athena usará o Parquet por padrão.
  • O nome do parâmetro, format, deve estar listado em letras minúsculas ou sua consulta CTAS falhará. Para ver um exemplo, consulte Exemplo: Gravar os resultados da consulta em um formato diferente.
  • Por padrão, todas as consultas CTAS usam compactação GZIP. Para Parquet e ORC, você pode usar as opções parquet_compression e orc_compression para especificar outros tipos de compactação, como SNAPPY. Para ver um exemplo, consulte Exemplo: Especificar formatos de armazenamento e compactação de dados.
  • Para formatos baseados em texto, você pode especificar um field_delimiter como este: WITH (field_delimiter = ','). Se você não especificar um delimitador de campo, o Athena usará \001 por padrão.
  • Se você usar o parâmetro external_location na consulta CTAS, verifique se a localização do Amazon Simple Storage Service (Amazon S3) não tem dados. Caso contrário, você poderá ver um erro como este: “HIVE_PATH_ALREADY_EXISTS: O diretório de destino para a tabela 'table_name' já existe: s3://AWSDOC-EXAMPLE-BUCKET”. Para obter mais informações sobre o parâmetro external_location, consulte as propriedades da tabela CTAS.

Informações relacionadas

Considerações e limitações para consultas de CTAS

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos