Explicación de Apache Spark combineByKey



Este blog de Spark Hadoop le dice todo lo que necesita saber sobre Apache Spark combineByKey. Encuentre el puntaje promedio por estudiante usando el método combineByKey.

Contribuido por Prithviraj Bose

Spark es un marco de computación en clúster ultrarrápido diseñado para computación rápida y la demanda de profesionales con es sustancial en el mercado actual.Aquí hay una potente API en Spark que es combineByKey .





Escala API: org.apache.spark.PairRDDFunctions.combineByKey .

API de Python: pyspark.RDD.combineByKey .



La API tiene tres funciones (como expresiones lambda en Pitón o funciones anónimas en Escalera ), a saber,

cómo convertir la fecha de la cadena a la fecha en java
  1. Crear función de combinador: x
  2. Función de fusión de valor: y
  3. Función de combinación de combinadores: z

y el formato API es combineByKey(x, y, z) .

Veamos un ejemplo (en Scala). Se puede encontrar la fuente completa de Scala Aquí .



Nuestro objetivo es encontrar la puntuación media por alumno.

Aquí hay una clase de marcador de posición ScoreDetail almacenar el nombre de los estudiantes junto con la puntuación de una materia.

Scoredetail-spark-combinebykey

Algunos datos de prueba se generan y se convierten en valores de pares de claves donde key = Nombre del alumno y value = ScoreDetail ejemplo.

Luego creamos un par RDD como se muestra en el fragmento de código a continuación. Solo para experimentar, he creado un particionador hash de tamaño 3, por lo que las tres particiones contendrán 2, 2 y 4 pares de valores clave respectivamente. Esto se destaca en la sección donde exploramos cada partición.

Ahora podemos explorar cada partición. La primera línea imprime la longitud de cada partición (número de pares clave-valor por partición) y la segunda línea imprime el contenido de cada partición.

clase anónima en java]

Y aquí está el movimiento final en el que calculamos la puntuación media por alumno después de combinar las puntuaciones de las particiones.

El flujo de código anterior es el siguiente ...
Primero necesitamos crear una función de combinación que es esencialmente una tupla = (valor, 1) para cada clave encontrada en cada partición. Después de esta fase, la salida para cada (clave, valor) en una partición es (clave, (valor, 1)).

Luego, en la siguiente iteración, las funciones del combinador por partición se fusionan usando la función de valor de fusión para cada tecla. Después de esta fase, la salida de cada (clave, (valor, 1)) es (clave, (total, recuento)) en cada partición.

Finalmente, la función de combinación de combinación fusiona todos los valores de las particiones en los ejecutores y envía los datos de vuelta al controlador. Después de esta fase, la salida de cada (clave, (total, recuento)) por partición es
(clave, (totalAcrossAllPartitions, countAcrossAllPartitions)).

El mapa convierte el
(clave, tupla) = (clave, (totalAcrossAllPartitions, countAcrossAllPartitions))
para calcular el promedio por clave como (clave, tupla._1 / tupla._2).

La última línea imprime los puntajes promedio de todos los estudiantes en el extremo del conductor.

Tienes una pregunta para nosotros? Menciónalos en la sección de comentarios y nos comunicaremos contigo.

Artículos Relacionados:

Desmitificando el particionamiento en Spark