Este post conecta Spark Structured Streaming a un tópico local de Kafka y lee mensajes en tiempo real. Ref: Structured Streaming + Kafka.

Descargas al final: ir a Descargas.

En pocas palabras

  • Spark puede leer Kafka directo con el connector.
  • Puedes validar streaming end‑to‑end localmente.
  • Es el puente entre ingesta y procesamiento.

Ejecuta tú mismo

  • Docker local: ruta principal de este blog.
1
docker compose up

Links:


Producir mensajes

Genera eventos en el tópico para alimentar el stream.

1
kafka-console-producer.sh --topic demo-events --bootstrap-server localhost:9092

Leer con Spark Structured Streaming

Spark leerá el tópico y enviará los mensajes a consola.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
df = (
    spark.readStream.format("kafka")
         .option("kafka.bootstrap.servers", "localhost:9092")
         .option("subscribe", "demo-events")
         .load()
)

out = df.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")

q = (
    out.writeStream.format("console")
       .outputMode("append")
       .option("truncate", False)
       .start()
)

Salida esperada: Verás filas nuevas en consola cuando envíes mensajes.


Qué verificar

  • Los mensajes aparecen en la salida de consola de Spark.
  • La consulta streaming sigue activa mientras produces.
  • Detener el producer no rompe la consulta.

Descargas

Si no quieres copiar código, descarga el notebook o el .py.