top of page

Coffee and Tips Newsletter

Inscreva-se na nossa newsletter semanal

Nos vemos em breve!

Boas Práticas com AWS Athena para Iniciantes

Foto do escritor: JPJP

AWS Athena
AWS Athena

O que é o AWS Athena?


O AWS Athena é um serviço serverless da Amazon que permite consultas SQL diretamente em dados armazenados no Amazon S3. Ele elimina a necessidade de gerenciar infraestrutura e é uma solução poderosa para análise de dados.


Boas Práticas para Melhor Performance e Redução de Custos


1. Use Particionamento para Reduzir Escaneamento de Dados


Por padrão, o AWS Athena escaneia todos os dados de uma tabela ao executar uma consulta. Para otimizar:


  • Crie partições baseadas em colunas frequentemente filtradas, como data ou categoria.


  • Registre as partições manualmente com ALTER TABLE ADD PARTITION.


  • Organize os dados no S3 com uma estrutura de diretórios eficiente, como s3://meu-bucket/dados/ano=2024/mes=01/.


O que é uma partição?


Uma partição é uma forma de dividir uma tabela em subgrupos menores com base em um critério específico, como data, região ou categoria. Em vez de armazenar todos os dados em um único local, as partições permitem que os dados sejam segmentados em diferentes diretórios no S3. Isso melhora significativamente a eficiência das consultas, pois o Athena lê apenas as partições relevantes ao invés de escanear toda a tabela.


Vantagens do uso de partições:


  • Redução de custos: Apenas as partições necessárias são escaneadas, diminuindo o volume de dados processado.


  • Melhoria na performance: O tempo de consulta é reduzido, pois menos dados precisam ser lidos.


  • Facilidade na organização dos dados: Os dados são armazenados de forma estruturada, facilitando o gerenciamento e a recuperação eficiente.


Exemplo:

ALTER TABLE minha_tabela ADD PARTITION (ano='2024', mes='01') LOCATION 's3://meu-bucket/dados/ano=2024/mes=01/';

Consulta eficiente utilizando partições:

SELECT nome, idade FROM minha_tabela WHERE ano='2024' AND mes='01';

Se a tabela estiver particionada corretamente, o Athena escaneará apenas os dados do ano e mês especificados, melhorando a performance e reduzindo custos.


2. Compacte e Otimize os Arquivos no S3


  • Prefira Parquet ou ORC ao invés de CSV/JSON, pois são formatos colunarizados que melhoram a performance e reduzem custo.


  • Combine vários arquivos pequenos em arquivos maiores para reduzir a latência.


Por que evitar CSV ou JSON?


  • CSV e JSON são formatos baseados em texto, o que significa que ocupam mais espaço e exigem maior tempo de leitura.


  • Falta de suporte a compressão nativa: CSV e JSON não possuem compressão embutida como Parquet e ORC, levando a maiores custos de armazenamento e processamento.


  • Leitura ineficiente: Como esses formatos armazenam dados em linhas, o AWS Athena precisa escanear toda a tabela, ao contrário de formatos colunarizados que leem apenas as colunas necessárias.


  • Estrutura inconsistente: JSON pode ter estrutura variada dentro do mesmo conjunto de dados, dificultando a análise e exigindo transformação prévia.


3. Evite SELECT *, Escolha Apenas as Colunas Necessárias


  • Consultar todas as colunas aumenta o volume de dados processado, gerando custos desnecessários.


  • Sempre especifique apenas as colunas necessárias.


Exemplo:

SELECT nome, idade FROM minha_tabela WHERE ano='2024';

4. Crie Tabelas Externas e Utilize Glue Catalog


  • Utilize o AWS Glue Data Catalog para gerenciar metadados e facilitar consultas.


  • Defina esquemas corretamente para evitar erros e retrabalho.


Por que criar tabelas externas?


  • Economia de custos: O Athena não copia os dados, ele simplesmente lê diretamente do S3.


  • Facilidade na gestão de dados: Não é necessário importar ou carregar os dados, apenas definir um esquema e apontar para o local correto no S3.


  • Desempenho otimizado: Definir esquemas melhora a eficiência das consultas e reduz o tempo de leitura.


  • Suporte a múltiplos formatos: Você pode armazenar dados em formatos otimizados como Parquet e ORC e consultá-los diretamente.


Exemplo de criação de tabela externa no Athena:


CREATE EXTERNAL TABLE minha_tabela (
    id STRING,
    nome STRING,
    idade INT
)
STORED AS PARQUET
LOCATION 's3://meu-bucket/dados-parquet/';

5. Utilize Filtragem e Predicados nas Consultas


  • Use WHERE e LIMIT para restringir a quantidade de dados lidos.


  • Prefira filtros em colunas particionadas para evitar escaneamento desnecessário.


Exemplo:

SELECT * FROM minha_tabela WHERE ano='2024' AND mes='01' LIMIT 100;


Conclusão


O AWS Athena é uma ferramenta incrível para consultas em grandes volumes de dados sem precisar gerenciar infraestrutura. No entanto, seguir boas práticas como particionamento, uso de formatos otimizados e filtragem eficiente é fundamental para melhorar a performance e reduzir custos.


 

Quer Aprender Mais? Inscreva-se na nossa Newsletter semanal!


Não perca nossas dicas exclusivas de Tech e Data!



Receba semanalmente:

  • Tutoriais práticos e diretos sobre Engenharia de Software e Dados

  • Insights de tecnologia e notícias da semana

 

Comentarios


bottom of page