MISIÓN 2 · Lección 8

Procesamiento de Datos en Tiempo Real con Spark Streaming

En esta lección aprenderemos a usar Spark Streaming para procesar flujos de datos en tiempo real, como logs, redes sociales o sensores IoT.

¿Qué es Spark Streaming?

Ejemplo básico: flujo desde un socket

from pyspark.streaming import StreamingContext

# Crear StreamingContext con batch de 5 segundos
ssc = StreamingContext(spark.sparkContext, 5)

# Leer flujo desde socket en el puerto 9999
lines = ssc.socketTextStream("localhost", 9999)

# Contar palabras
words = lines.flatMap(lambda line: line.split(" "))
pairs = words.map(lambda word: (word, 1))
counts = pairs.reduceByKey(lambda a, b: a + b)

counts.pprint()

ssc.start()
ssc.awaitTermination()

Ejemplo con Kafka

from pyspark.sql import SparkSession
from pyspark.sql.functions import *

spark = SparkSession.builder.appName("SparkKafka").getOrCreate()

# Leer desde Kafka
df = spark.readStream.format("kafka") \
    .option("kafka.bootstrap.servers", "localhost:9092") \
    .option("subscribe", "topic_test") \
    .load()

# Procesar mensajes
mensajes = df.selectExpr("CAST(value AS STRING)")

consulta = mensajes.writeStream \
    .outputMode("append") \
    .format("console") \
    .start()

consulta.awaitTermination()

Ventajas de Spark Streaming

Comparación con otras tecnologías

Aplicaciones reales

Buenas prácticas

Reflexión final

Spark Streaming permite procesar datos en movimiento y reaccionar en tiempo real a eventos del mundo real. Es una herramienta poderosa para construir aplicaciones inteligentes y escalables en Big Data.