Definición


Es un procesamiento distribuido de datos utilizando un Cluster de computadoras. Para esto se necesita un Almacenamiento distribuido que se encargue de guardar la información para procesar, y un File system distribuido para organizarlo. Esto lo aplica en dos etapas:

Map

Definición


Para esto el usuario especifica una función map que procesa un par clave-valor para generar un conjunto intermedio de pares clave-valor.

Esta transforma nuestros datos, y tiene que ser aplicada a cada dato de nuestro set. Por eso lo recomendable es que sea paralelizable y de esa forma poder distribuirse entre las distintas máquinas de un cluster.

# Transforma todos los elementos en su valor multiplicado por 2
rdd_par = rdd.map(lambda x: x * 2)
 
# Transforma todos los elementos en una tupla de el elemento, este elevado al cuadrado y por ultiplo el elemento mod 3
rdd_tupla = rdd.map(lambda x: (x, x**2, x % 3))
Link to original

Reduce

Definición


Se debe especificar también una función reduce que es una acción que combina todos los valores asociados a la misma clave.

Combina los resultados de una transformación, por lo tanto es necesario procesar los datos de todas las máquinas del Cluster. Reduce de forma local en paralelo y reduce entre máquinas mediante la Etapa de shuffle & sort.

Esta acción nos permite obtener un solo registro de un RDD, combinando el resultado en base a una función dada.

# sumar todos los números del RDD
rdd.reduce(lambda a, b: a + b)
 
# El número más grande
rdd.reduce(lambda a, b: a if a > b else b)
Link to original