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 2rdd_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 3rdd_tupla = rdd.map(lambda x: (x, x**2, x % 3))
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 RDDrdd.reduce(lambda a, b: a + b)# El número más granderdd.reduce(lambda a, b: a if a > b else b)