¿Cómo funciona el Cartesian Product Join en Spark? – Hadoop en el mundo real

El Cartesian Product Join (también conocido como Shuffle-and-Replication Nested Loop) funciona de forma muy similar a un Broadcast Nested Loop join, excepto que el conjunto de datos no se transmite.

Barajar y replicar no significa una «verdadera» barajada, es decir, los registros con las mismas claves se envían a la misma partición. En su lugar, toda la partición del conjunto de datos se envía o se replica a todas las particiones para una unión completa cruzada o de bucle anidado.

¿Quiere que le enviemos una guía definitiva de 47 páginas sobre los algoritmos de join de Spark? ===>

Ejemplo

Estamos configurando
chispa.sql.autoBroadcastJoinThreshold a -1 para desactivar la difusión.


Recomendado: ¿Qué es el Big data?.


Tenga en cuenta que aquí estamos intentando realizar una operación de unión no equitativa.

Cuando vemos el plan que se ejecutará, podemos ver que se utiliza CartesianProduct.

Etapas de la unión del producto cartesiano

Esta unión se ejecuta en una sola etapa. Aunque esta unión también se denomina barajar y replicar, no significa una «verdadera» barajada, ya que los registros con las mismas claves se envían a la misma partición. En su lugar, toda la partición del conjunto de datos es enviada o replicada a todas las particiones para una unión completa cruzada o de bucle anidado.

Producto cartesiano unir etapas de Spark

Funcionamiento interno de un producto cartesiano Join

  • Se leen ambos conjuntos de datos. Todas las particiones de uno de los conjuntos de datos se envían a todas las particiones del otro conjunto de datos.
  • Una vez que las particiones de ambos conjuntos de datos están disponibles en un lado, se realiza una unión de bucle anidado.
  • Si hay N registros en un conjunto de datos y M registros en el otro conjunto de datos, se realiza un bucle anidado en N * M registros.

Unión de productos cartesianos Etapa 1

¿Cuándo funciona la unión de productos cartesianos?

  • Funciona tanto en uniones equis como no equis
  • Funciona sólo en uniones equis internas

¿Cuándo no funciona la unión de productos cartesianos?

  • No funciona en uniones no internas
  • Este es un algoritmo de unión muy caro. Excepto la carga en la red y las particiones se mueven a través de la red.
  • Alta posibilidad de excepción por falta de memoria.

¿Interesado en aprender sobre Shuffle Sort Merge join en Spark? – Haga clic aquí.