Capítulo 1: Pipelines de Ingestão de Dados
Introdução
A ingestão de dados é a base de qualquer sistema de ML. Este capítulo aborda como construir pipelines de dados confiáveis e escaláveis utilizando ferramentas modernas de orquestração.
Apache Airflow para Pipelines de ML
Estrutura Básica de um DAG
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'ml-team',
'depends_on_past': False,
'email_on_failure': True,
'email': ['ml-alerts@company.com'],
'retries': 3,
'retry_delay': timedelta(minutes=5),
}
with DAG(
'ml_data_pipeline',
default_args=default_args,
description='Daily ML data ingestion pipeline',
schedule_interval='0 6 * * *', # Daily at 6 AM
start_date=datetime(2024, 1, 1),
catchup=False,
tags=['ml', 'data', 'production'],
) as dag:
extract = PythonOperator(
task_id='extract_data',
python_callable=extract_from_source,
)
transform = PythonOperator(
task_id='transform_data',
python_callable=transform_data,
)
validate = PythonOperator(
task_id='validate_data',
python_callable=run_data_validation,
)
load = PythonOperator(
task_id='load_to_feature_store',
python_callable=load_features,
)
extract >> transform >> validate >> load
Processamento em Streaming vs Lote
| Aspecto | Processamento em Lote | Processamento em Streaming |
|---|---|---|
| Latência | Minutos a horas | Milissegundos a segundos |
| Caso de Uso | Dados de treinamento, relatórios | Features em tempo real |
| Ferramentas | Spark, Airflow | Kafka, Flink |
| Complexidade | Menor | Maior |
Principais Aprendizados
Summary
- Use ferramentas de orquestração como o Airflow para pipelines complexos
- Escolha entre lote e streaming conforme os requisitos de latência
- Implemente idempotência para reexecuções confiáveis
- Monitore a saúde do pipeline com alertas e dashboards