#4 Orquestração de Pipelines com Airflow
Série: Trilha prática para se tornar Engenheiro de Dados – Capítulo 4 Pré-requisitos Antes de começar, você deve ter rodado os capítulos anteriores (especialmente o Capítulo 3, onde criamos um mini DW com SQLite). Capítulo 1: Seu primeiro pipeline ETL Capítulo 2: Python + SQL – a dupla inseparável Capítulo 3: Data Lake, Data Warehouse e o conceito de Lakehouse Prepare seu ambiente: pip install apache-airflow pandas requests sqlalchemy Observação: no mundo real, o Airflow é configurado com Postgres/MySQL como metastore e Celery/Kubernetes como executor . Aqui vamos simular localmente com SQLite, apenas para aprender. Não se preocupe: vamos usar apenas exemplos simples, que rodam localmente. Orquestração de Pipelines com Airflow : Por que orquestrar pipelines? Até aqui, criamos scripts que: Extraem dados de uma API. Transformam em tabelas organizadas. Carregam em um DW local. Mas… e se: Precisamos rodar esse pipeline todos os dias às 8h ? A etapa de transformação só pode começar quando a extração terminar? Queremos alertar se algo falhar? 👉 É aqui que entra a orquestração : organizar a execução de tarefas, suas dependências e monitorar tudo de forma confiável.
Conceitos básicos do Airflow DAG (Directed Acyclic Graph) : conjunto de tarefas organizadas em fluxo (grafo). Operadores : definem o que cada tarefa faz (PythonOperator, BashOperator, etc.). Scheduler : decide quando rodar cada DAG. Executor : executa de fato as tarefas. UI Web : painel onde monitoramos execuções, falhas e históricos. 👉 Pense em uma linha de produção : cada máquina (tarefa) faz algo, e a esteira (DAG) conecta todas as etapas.
Ferramentas do mercado Além do Apache Airflow , outras soluções de orquestração ganharam força: Prefect → moderno, com sintaxe Python nativa e foco em usabilidade. Dagster → orientado a “assets” (ativos de dados). Luigi → pioneiro, mas menos popular atualmente.
👉 O Airflow ainda é o mais usado no mercado, principalmente em empresas que trabalham com AWS, GCP e Azure. Na AWS já existe este serviço gerenciado chamada MWAA . Exemplo prático – Criando sua primeira DAG
Vamos simular uma Orquestração de Pipelines com Airflow :
Extrair dados de produtos da API DummyJSON. Transformar em DataFrame organizado. Carregar no SQLite (mini DW local). dag_produtos.py ▶️ Como executar Inicie o Airflow Acesse o terminal e digite o seguinte comando: airflow standalone Isso cria a pasta de trabalho padrão (AIRFLOW_HOME), o metastore SQLite e sobe webserver + scheduler. Copiando a o arquivo para a pasta Dags / do Ariflow (caso não saiba onde fica a pasta, veja seção completa mais abaixo por SO e volte aqui depois) Copie dag_produtos.py para a pasta dags/ do seu AIRFLOW_HOME. Abra a UI Acesse o seu navegador e digite a URL abaixo: http://localhost:8080/ A página de login será aberta como mostra a imagem abaixo: 🔑 Login na UI (usuário e senha) Usuário : admin Senha : gerada automaticamente e mostrada no console da primeira vez que você roda airflow standalone. Se não apareceu a senha no console, abra o arquivo simple_auth_manager_passwords.json.generated conforme abaixo: # macOS/Linux
cat ~/airflow/simple_auth_manager_passwords.json.generated
# Windows (PowerShell)
type $HOME\airflow\simple_auth_manager_passwords.json.generated Conteúdo típico: [
{ "username": "admin", "password": "a8f9x2d1" }
] Executando e Validando o resultado da DAG Após acessar a UI do Airflow, vamos executar a DAG. Na UI conforme a imagem abaixo, clique no canto esquerdo na opção Dags e procure pela DAG criada anteriormente digitando no campo de pesquisa pipeline_produtos . Executando a DAG Clique em cima da DAG conforme imagem acima e você será redirecionado para a tela seguinte: Agora clique no botão azul Trigger e confirme novamente no pop-up a seguir e veja a mágica acontecer! Após finalizar a execução, a imagem abaixo com os resultados irá aparecer com status Success . Isso mostra que a DAG e as suas respectivas Tasks rodaram fino! Validando o resultado após a execução da DAG 1) Pela UI Graph View → tarefas verdes ✅. Clique em cada T ask ID → Logs → procure mensagens de sucesso. 2) Pelos arquivos Acesse os arquivos abaixo e veja como estão preenchidos:
/tmp/produtos.csv /tmp/produtos_transformados.csv /tmp/meu_dw.db (o “DW” local) 3) Pela consulta no SQLite Acesse o terminal e execute o comando abaixo: sqlite3 /tmp/meu_dw.db /tmp/meu_dw.db é o caminho para o DW criado pela Task Carregar , lembra? Em Seguida, no console, execute o comando abaixo: .headers on
.mode column
.tables -- deve listar 'produtos'
SELECT category, AVG(price) AS preco_medio, AVG(rating) AS avaliacao_media
FROM produtos
GROUP BY category
ORDER BY preco_medio DESC; Saída esperada Pronto, você acaba de criar uma pipeline usando Airflow! Pronto para a próxima? 📁 Onde fica a pasta de DAGs? (por sistema) A) Conceito-chave: AIRFLOW_HOME O Airflow usa a variável de ambiente AIRFLOW_HOME para saber onde ficam dags/, logs/ e plugins/.Se não estiver definida, o padrão é ~/airflow (home do usuário). Verifique o valor da variável: macOS/Linux (bash/zsh): echo $AIRFLOW_HOME Windows (PowerShell): echo $env:AIRFLOW_HOME Se vier vazio , assuma o padrão ~/airflow (ou C:\Users\SeuUsuario\airflow no Windows). A pasta de DAGs estará em: $AIRFLOW_HOME/dags/ B) macOS (e Linux) 1. Descobrir AIRFLOW_HOME echo $AIRFLOW_HOME Se vazio, o padrão é: ls -la ~/airflow 2. Ver a pasta de DAGs ls -la ~/airflow/dags 3. Copiar a DAG mv /caminho/para/dag_produtos.py ~/airflow/dags/ 4. Dica extra (caso tenha alterado AIRFLOW_HOME) Se você configurou um outro caminho em ~/.bashrc ou ~/.zshrc: export AIRFLOW_HOME="$HOME/meu_airflow"
source ~/.zshrc # ou ~/.bashrc
echo $AIRFLOW_HOME
ls -la $AIRFLOW_HOME/dags C) Windows 1. Descobrir AIRFLOW_HOME PowerShell: echo $env:AIRFLOW_HOME Se vazio, use: ls $HOME\airflow (Em geral: C:\Users\SeuUsuario\airflow) 2. Ver a pasta de DAGs ls $HOME\airflow\dags 3. Copiar a DAG Copy-Item -Path "C:\caminho\para\dag_produtos.py" -Destination "$HOME\airflow\dags\" 4. (Opcional) Definir AIRFLOW_HOME permanente No PowerShell profile ou variáveis de ambiente do sistema: [Environment]::SetEnvironmentVariable("AIRFLOW_HOME", "C:\AirflowHome", "User") Depois feche e reabra o terminal. Leituras recomendadas Capítulo 1: Seu primeiro pipeline ETL Capítulo 2: Python + SQL – a dupla inseparável Capítulo 3: Data Lake, Data Warehouse e o conceito de Lakehouse Criando ETLs simples com Python Primeiros passos com Delta Lake Entendendo o AWS Redshift Boas Práticas com AWS Athena para Iniciantes Conclusão Neste capítulo você aprendeu que: Você orquestrou um pipeline real : Extrair → Transformar → Carregar. Usou o Airflow , um componente bastante usado em pipelines de Dados O que vem a seguir? 👉 No Capítulo 5: Apache Spark e processamento distribuído — por que Spark é tão usado e como pensar em paralelismo (com simulações locais). Gostou desse capítulo? 👉 Assine a newsletter Coffee & Tips e receba os próximos capítulos direto no seu e-mail. 👉 Pré-venda exclusiva Em breve também vamos lançar um E-Book avançado , com tutoriais em Spark, Airflow, Redshift, tudo para você se tornar um Engenheiro de Dados! Cadastre-se agora na lista de pré-venda e garanta: Acesso antecipado antes do lançamento oficial 🚀 Benefícios exclusivos para inscritos 💡 Conteúdo extra que não estará disponível gratuitamente Fique ligado!
