Volver al curso

Data Engineering con Python: Pipelines y Big Data

leccion
9 / 12
advanced
32 horas
Big Data: Procesamiento Distribuido con Spark

Streaming en Tiempo Real: Kafka y Spark Streaming

Lectura
50 min~1 min lectura

Procesamiento en Tiempo Real

El batch es suficiente para la mayoria de casos en LATAM. Pero ciertos escenarios requieren datos en tiempo real: deteccion de fraude, personalizacion instantanea, monitoreo y alertas operacionales.

TipoLatenciaComplejidadCasos de Uso
BatchHorasBajaReportes, ETL diario, ML training
Micro-BatchSegundos-MinutosMediaDashboards near-real-time
StreamingMilisegundosAltaFraude, pricing dinamico, IoT
from kafka import KafkaProducer
import json

producer = KafkaProducer(
    bootstrap_servers=['kafka-broker:9092'],
    value_serializer=lambda v: json.dumps(v).encode('utf-8'),
    acks='all', retries=3
)

event = {
    'transaction_id': 'txn_abc123',
    'user_id': 'usr_456',
    'amount': 15000.50,
    'currency': 'ARS',
    'merchant': 'MercadoLibre',
    'country': 'AR',
    'timestamp': '2025-06-15T14:30:00Z'
}
producer.send('transactions', value=event)
producer.flush()
from pyspark.sql import SparkSession, functions as F

spark = SparkSession.builder.appName('FraudDetection').getOrCreate()

# Leer stream desde Kafka
df_stream = spark.readStream \
    .format('kafka') \
    .option('kafka.bootstrap.servers', 'kafka:9092') \
    .option('subscribe', 'transactions') \
    .load()

# Detectar anomalias: +5 transacciones en 1 minuto
anomalias = df_stream \
    .withWatermark('timestamp', '2 minutes') \
    .groupBy(F.window('timestamp', '1 minute'), 'user_id') \
    .agg(F.count('*').alias('num_txns'), F.sum('amount').alias('total')) \
    .filter(F.col('num_txns') > 5)

query = anomalias.writeStream.format('kafka') \
    .option('topic', 'fraud_alerts') \
    .option('checkpointLocation', '/checkpoints/fraud') \
    .start()

🚀 Kafka en LATAM

Mercado Libre: 50M+ eventos/dia para tracking de entregas. Nubank: Fraude en tiempo real para 80M+ clientes. iFood: Matching de pedidos en 2 seg. Rappi: Pricing dinamico.

Streaming de datos

Empieza con batch, migra a micro-batch cuando necesites, y solo streaming real cuando el negocio lo justifique.