AWS Glue
Introdução
Para praticarmos com Data Lakes e ETL na nuvem, usaremos o AWS Glue. Ele é um serviço serverless e totalmente gerenciado de ETL (Extract, Transform, Load) que automatiza descoberta, preparo, transformação e carregamento de dados a partir de múltiplas fontes.
Prepare o bolso!
Você foca na lógica de negócio, a AWS cuida de infraestrutura (escalonamento, gerenciamento de recursos, monitoração).
Em alto nível, o Glue funciona como a espinha dorsal de preparação de dados em um ecossistema analítico: descobre dados, organiza metadados no Data Catalog, gera ou executa jobs Spark (Python ou Scala), orquestra dependências e integra-se com serviços analíticos como Athena, Redshift, EMR, QuickSight (serviços que ainda não foram explorados no curso).
Estrutura básica S3
Para explorarmos as características principais do Glue, vamos criar um Data Lake simples em S3 e usar o Glue para catalogar, transformar e preparar dados para análise.
Vimos que um Data Lake geralmente é organizado em camadas para facilitar a gestão e o processamento dos dados. A estrutura básica do bucket será a seguinte:
Exercise
Exercise
Exercise
Exercise
Base de Dados
Iremos utilizar a base de dados Brazilian E-Commerce Public Dataset by Olist, disponível no Kaggle
Fonte da imagem: Kaggle
Exercise
Agora vamos subir a base de dados de itens vendidos (olist_order_items
):
Exercise
Agora vamos subir a base de dados de products (olist_products
):
Exercise
Exercise
Glue: Características Principais
Os componentes mais usados do Glue são:
Data Catalog & Metadados
Repositório centralizado de metadados (tabelas, bancos lógicos, partições, esquemas, localização no S3, formatos, propriedades). Dentre outras características, ele:
- Permite descoberta de dados por múltiplos serviços (Athena, Redshift Spectrum, EMR, Glue Jobs).
- Armazena evolução de esquemas (schema versioning) e suporta alteração incremental.
Info!
Ao registrar tabelas no Data Catalog, elas tornam-se imediatamente consultáveis por Athena (SQL serverless) ou via Redshift Spectrum, evitando duplicação de metadados.
Crawlers
Processos que inspecionam fontes (S3, JDBC, etc.) para inferir automaticamente esquemas e criar/atualizar entradas no Data Catalog. Benefícios:
- Automatizam descoberta e atualização de partições (por exemplo, dados particionados por
ano=2025/mes=09/
). - Reduzem erro humano em definição manual de tipos.
- Podem ser agendados ou executados sob demanda.
Criar um Crawler
Vamos criar um crawler para descobrir e catalogar a tabela olist_order_items
que acabamos de subir para o S3.
Inicialmente, criaremos um database no Glue Data Catalog para organizar nossas tabelas:
Exercise
Exercise
Agora precisamos criar uma role IAM para o Glue ter permissão de ler os dados do S3 e escrever no Data Catalog.
Exercise
Exercise
Exercise
Exercise
Exercise
Exercise
Exercise
Athena
Como desejamos consultar os dados catalogados, vamos acessar o Athena.
Exercise
Em seguida, no menu esquerdo, escolha o database meu-db-olist
criado anteriormente.
No editor de consultas, teste algumas consultas envolvendo as duas tabelas.
Query result location
Caso o Athena solicite uma pasta para salvar os resultados das consultas, informe a pasta athena-results/
dentro do seu bucket.
Por exemplo: s3://meu-data-lake-<INSPER_USERNAME>/athena-results/
SELECT COUNT(*) AS qtde_itens_vendidos,
SUM(price) AS vlr_total_vendido
FROM olist_order_items;
SELECT * FROM olist_order_items LIMIT 5;
Dica!
Caso digite múltiplas queries, selecione a query que deseja executar e clique no botão Run again ou aperte Ctrl + Enter.
Pronto! Desta maneira, conseguimos catalogar e consultar dados brutos no S3 usando o Glue e o Athena.
Exercise
Exercise
Answer
SELECT p.product_category_name, COUNT(*) AS qtde_itens_vendidos
FROM olist_order_items oi
JOIN olist_products p ON oi.product_id = p.product_id
GROUP BY p.product_category_name
ORDER BY qtde_itens_vendidos DESC
LIMIT 5;
product_category_name | qtde_itens_vendidos |
---|---|
cama_mesa_banho | 11115 |
beleza_saude | 9670 |
esporte_lazer | 8641 |
moveis_decoracao | 8334 |
informatica_acessorios | 7827 |
Jobs de ETL
Os jobs de ETL no AWS Glue são processos automatizados que permitem extrair dados de diferentes fontes, realizar transformações necessárias e carregar os resultados em destinos apropriados, como data lakes ou data warehouses. Eles são essenciais para organizar, limpar e preparar grandes volumes de dados de forma eficiente, sem a necessidade de gerenciar infraestrutura manualmente.
Utilizamos jobs de ETL do Glue quando precisamos integrar dados de múltiplos sistemas, padronizar formatos, enriquecer informações ou criar pipelines analíticos que exigem escalabilidade e automação. Cenários comuns incluem a conversão de arquivos brutos em formatos otimizados para análise, a atualização incremental de tabelas, ou a preparação de dados para visualização e exploração por ferramentas como Athena ou Redshift.
Vendedor da AWS!
O Glue facilita o trabalho de engenharia de dados, tornando o processo mais ágil, seguro e integrado ao ecossistema AWS.
Os jobs de ETL no Glue leem, transformam e escrevem dados. São programados em Python (PySpark) ou Scala.
Vamos criar um job* que lê a tabela olist_order_items
e grava o resultado em formato Parquet na pasta processed/
.
Este passo será realizado de forma manual, pelo editor visual do Glue Studio.
Exercise
Exercise
As sources representam as fontes de dados de entrada que o job irá processar.
Exercise
Exercise
Exercise
Exercise
Exercise
Exercise
Exercise
Exercise
Este é o grafo que representa o fluxo de dados do job:
Exercise
Exercise
Answer
Não. Precisamos catalogar os novos dados. Mas antes, vamos atualizar nosso ETL.
Exercise
Exercise
Exercise
Exercise
Exercise
Por hoje é só!