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 (Resilient Distributed Datasets) o conjuntos de datos distribuidos resistentes.
Por otra parte, los RDD (Resilient Distributed Datasets) 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 estas características:
- Inmutables: estos no se pueden modificar una vez han sido creados.
- Distribuidos: hace referencia a los RDD (Resilient Distributed Datasets) 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.
Por otra parte, los RDD se transforman, de manera que se crean nuevos RDD (Resilient Distributed Datasets) y estas transformaciones se aplican a los datos.
En definitiva, un RDD (Resilient Distributed Datasets) es trabajar con el conjunto de 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.
Por otra parte, existen distintas formas de generar RDD:
- Obtener datos de un fichero.
- Distribución de datos desde el driver.
- Transformar un RDD para crear un nuevo RDD.
En suma, los RDD (Resilient Distributed Datasets) permiten dos tipos de operaciones, que son:
- Transformaciones: consiste en generar un RDD a partir de otro RDD. 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…
RDD: Ciclo de vida
A continuación, te compartimos cómo se muestra el ciclo de vida de los RDD (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.
RDD: 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.
RDD: 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.
¿Cómo seguir aprendiendo sobre los macrodatos?
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!