RDD (Resilient Distributed Datasets) es uno de los componentes que se encuentran en el Spark Core, el corazón del sistema de computación de Apache Spark. Este es uno de los servicios más reconocidos que ofrece, ya que es ideal para optimizar la gestión de los macrodatos y analizar los resultados de la información.
Por ello, conocer cómo se desenvuelve para, posteriormente, llevarlo a la práctica en tu procesamiento de los datos, es de suma importancia. En el desarrollo de este post te exponemos qué es RDD (Resilient Distributed Datasets) para el sistema de computación Apache Spark.
¿Qué es RDD (Resilient Distributed Datasets)?
El sistema de Apache Spark trabaja con los datos bajo un concepto denominado RDD o conjuntos de datos distribuidos resistentes.
Los RDD poseen unas características específicas que ayudan a procesar los datos de una forma más eficaz. A continuación, te exponemos cuáles son:
- Inmutables: estos no se pueden modificar una vez han sido creados.
- Distribuidos: hace referencia a los R D D que están divididos en particiones que están repartidas en el clúster.
- Resilientes: en caso de perder una partición, esta se regenera automáticamente.
Transformaciones en los RDD
Los R D D se transforman, de manera que se crean nuevos Resilient Distributed Datasets y estas transformaciones se aplican a los datos.
Las rdd transformations pueden ser:
- Narrow: no necesitan intercambio de información entre los nodos del clúster.
- Wide: necesitan intercambio de información entre los nodos del clúster.
¿Cómo se generan los resilient distributed datasets?
Existen distintas formas de generar resilient distributed datasets, a saber:
- Obtener datos de un fichero.
- Distribución de datos desde el driver.
- Transformar un RDD para crear un nuevo RDD.
Así pues, los Resilient Distributed Datasets permiten dos tipos de operaciones, que son:
- Transformaciones: consiste en generar un RDD a partir de otro. Nos
permite trabajar con datos y generar nuevos, como map, flatMap, filter… - Acciones: suelen ser puntos finales de procesamiento, devuelven un valor al
driver o envían datos a una fuente externa, como count, collect, saveAsTextFile…
Ciclo de vida
A continuación, te compartimos cómo se muestra el ciclo de vida de los Resilient Distributed Datasets, el cual pasa de la generación a las transformaciones, en las que se genera un nuevo RDD. Posteriormente, en el caché en el que se realizan procesos de la memoria y, finalmente, en las acciones, donde se recolectan los datos al driver.
Transformaciones/Lazy evaluation
Las transformaciones en RDD se evalúan en diferido, lo que significa que Apache Spark no comenzará a ejecutarse hasta que se muestre o se lance una acción. En lugar de pensar en un RDD que contiene datos, es mejor pensar en un conjunto de instrucciones sobre cómo calcular los datos que construimos a través de transformaciones.
Por otra parte, Apache Spark utiliza la evaluación diferida para reducir el número de pasadas
para hacerse cargo en nuestros datos agrupando las operaciones.
Key/Value Pairs
Estos son los RDD en los que cada uno de los elementos de la colección es una dupla de dos elementos: CLAVE > VALOR.
- En primer lugar, estos pueden generarse así:
val keyValuePairRDD = sc.parallelize(Seq((1,2), (2,3)))
- En segunda instancia, pueden construirse mediante transformaciones:
val words = sc.parallelize(List("avion", "tren", "barco", "coche", "moto", "bici"), 2)
val rddWithKey = words.keyBy(_.length) // se usa la longitud de la palabra como clave
rddWithKey.groupByKey.collect()
RDD: Acciones
Las acciones en Apache Spark provocan el procesamiento de datos. De manera que, cuando se ejecuta una acción, se aplican todas las transformaciones planificadas y finalmente la acción.
Por otra parte, las acciones provocan que los datos se evalúen desde el origen aplicando todas las transformaciones.
múltiples acciones === múltiples evaluaciones de los datos desde el origen
Por último, existen acciones que mueven datos al proceso del driver y otras que se ejecutan directamente en los executors. Te aconsejamos no llevar demasiados datos al driver, puesto que se cuenta con pocos recursos.
En el transcurso de este post, desde KeepCoding te hemos expuesto qué es RRD (Resilient Distributed Datasets) como parte del procesamiento de los macrodatos. Sin embargo, recuerda que hay más de estas herramientas y es necesario que las consultes para escoger la que mejor se adapte a tus necesidades. Además, el trabajo de un buen data scientist consiste en identificar las soluciones adecuadas para el análisis de datos.
Nuestro Bootcamp Full Stack Big Data, Inteligencia Artificial & Machine Learning te permitirá consolidar tus conocimientos y poner a prueba tus destrezas en este ámbito del sector IT. En el transcurso de este bootcamp, aprenderás cómo el data mining es la técnica para extraer el conocimiento a través de grandes volúmenes de datos y a utilizar sus métodos de inteligencia artificial, aprendizaje automático, estadística y sistemas de bases de datos.
La combinación del aprendizaje teórico y práctico te permitirá afianzar los conocimientos de forma más efectiva para convertirte en un experto. No lo dudes más, ¡inscríbete y empieza ahora!