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 é o componente central para preparação e orquestraçã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).
Exercise
Answer
Orquestrar dependências significa que o Glue gerencia automaticamente a ordem e o tempo de execução dos diferentes passos de um pipeline de ETL, garantindo que cada etapa seja executada após suas dependências serem satisfeitas.
A mesma funcionalidade pode ser obtida com o Prefect, visto nas aulas anteriores.
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:
meu-data-lake-<INSPER_USERNAME>/
raw/
processed/
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:
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
Answer
olist_order_items: 112650 linhas
olist_products: 32951 linhas
SELECT COUNT(*) FROM olist_order_items; -- 112650
SELECT COUNT(*) FROM olist_products; -- 32951
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 e integrado ao ecossistema AWS.
Os jobs de ETL no Glue leem, transformam e escrevem dados. Eles podem ser 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
Answer
SELECT COUNT(*) FROM order_items_products;
Exercise
Por hoje é só!