miércoles, 21 de marzo de 2018

Conjuntos de datos distribuidos resistentes en Spark


Conjuntos de datos distribuidos resistentes o Resilient distributed datasets (RDD) esta basado en Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing” (Matei et al 2012) este es el concepto base de Apache Spark.

RDD es como una tabla en una base de datos, la cual puede guardar datos de cualquier tipo. Spark guarda datos en RDD en diferentes particiones.

RDD ayudan a reorganizar los cálculos y a optimizar el procesamiento de datos. También son tolerantes a fallas porque el RDD sabe cómo recrear y volver a calcular los conjuntos de datos.

RDDs son inmutables (podemos ver la programación funcional de scala en este aspecto). Es decir se puede procesar un RDD pero esto retornara un nuevo RDD con el resultado de la transformación.

RDD soporta 2 tipos de acciones:

  • Transformaciones: esto no retorna un valor pero retorna un nuevo RDD. Algunas funciones de transformación:  map , filter , flatMap , groupByKey , reduceByKey , aggregateByKey , pipe y coalesce.
  • Acciones: operaciones que retornan un valor. Cuando una acción es llamada los datos son procesados y un valor es retornado. Algunas funciones de acción: reduce , collect , count , first , take , countByKey y foreach.