¿Cómo funciona Joins en Spark Structured Streaming?

| Última modificación: 6 de junio de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Si estás leyendo este post seguro que tienes algún interés por el Big Data o por el análisis de datos. Afortunadamente, la información sobre cómo funciona Joins en Spark Structured Streaming te aportará un amplio panorama del servicio de computación Apache Spark. Esta tecnología es muy útil para acercarte a los sistemas de computación más populares dentro del mundo Big Data.

Conocer las diferentes formas de hacer joins en el sistema Apache Spark, específicamente, dentro de su arquitectura de Spark Stack, te ayudará a facilitar el procesamiento de los datos por medio de los comandos empleados para este tipo de análisis de la información. Por esta razón, en este post te exponemos cómo funciona Joins en Spark Structured Streaming.

¿Cómo funciona Joins en Spark Structured Streaming?

Structured Streaming soporta hacer joins con dataset estáticos y con otros streams como:

Stream-Static

No necesita mantener el estado. El stream de datos hace join con el dataset estático previamente cargado en memoria.

val staticDf = spark.read. …
val streamingDf = spark.readStream.

streamingDf.join(staticDf, “type”)
streamingDf.join(staticDf, “type”, “right_join”)

Stream-Stream

La función Join de Stream-Stream necesita mantener el estado de los streams para asegurar que eventos que llegan en diferentes momentos en el tiempo hagan join.

Para ello, debes seguir una dupla de pasos que ayudarán al sistema a llevar a cabo estas Joins en Spark Structured Streaming:

  • En primer lugar, definir las marcas de agua (watermarks) una vez se vaya a gestionar la memoria.
  • En segunda instancia, poder definir las condiciones del join adicionales, de forma que puedas identificar cuándo las entradas dejarán de hacer match con las entradas futuras.

Condiciones de joins adicionales

Por otra parte, también podrás encontrar estas condiciones adicionales de las Joins en Spark Structured Streaming que podrás dividir en dos tipos:

  • Condiciones de rango de tiempo: tal como su nombre indica, estas se realizan en cuanto a una unión de tiempo. A continuación, te exponemos cómo se visualiza en el desarrollo de los comandos de la consola:

JOIN ON
leftTime BETWEEN
rightTime AND rightTime + INTERVAL 1 HOUR

  • Condiciones en ventana de tiempo: para este tipo de joins se establece en el sistema un rango restringido de tiempo, por medio del que Apache Spark discrimina los datos que no pertenecen a esta secuencia.

JOIN ON leftTimeWindow = rightTimeWindow

Finalmente, lo que logra cada una de estas condiciones es ayudar a que el sistema de Apache Spark pueda descartar datos a la hora de ejecutar los joins entre los dos streams.

Ejemplo de Joins en Spark Structured Streaming

A continuación, te compartimos un breve ejemplo de cómo se desprenden estos joins en la consola de Apache Spark:

import org.apache.spark.sql.functions.expr
val impressions = spark.readStream. …
val clicks = spark.readStream. …
// Apply watermarks on event-time columns
val impressionsWithWatermark = impressions.withWatermark(
“impressionTime”, “2 hours”
)
val clicksWithWatermark = clicks.withWatermark(“clickTime”, “3 hours”)
// Join with event-time constraints
impressionsWithWatermark.join(
clicksWithWatermark,
expr(“””
clickAdId = impressionAdId AND
clickTime >= impressionTime AND
clickTime <= impressionTime + interval 1 hour
“””)
)

Instrúyete más sobre el procesamiento Big Data

Por medio de este post, te hemos expuesto cómo funciona Joins en Spark Structured Streaming dentro del mundo de procesamiento ofrecido por Apache Spark. Sin embargo, debes tener en cuenta que este proceso es solo uno de los muchos que puedes realizar con Spark Structured Streaming en tu análisis de datos. Por ello, te recomendamos seguir instruyéndote en el procesamiento de los macrodatos.

Si aún no sabes cómo y quieres aprender en profundidad acerca de las principales herramientas para el procesamiento de los macrodatos, desde KeepCoding te ofrecemos nuestro Bootcamp Full Stack Big Data, Inteligencia Artificial & Machine LearningCon este bootcamp, no solo continuarás instruyéndote sobre el Big Data, también podrás hacerlo de manera remota y con el acompañamiento de grandes especialistas en cada uno de sus once módulos de desarrollo. Además, nuestra enseñanza teórica siempre irá de la mano con el ensayo práctico. ¿A qué estás esperando? ¡Inscríbete ahora!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado