Introducción a RDD en Spark

Un RDD que significa Resilient Distributed Dataset es uno de los conceptos más importantes en Spark. Es una colección de registros de solo lectura que se divide y distribuye entre los nodos en un clúster. Se puede transformar en algún otro RDD a través de operaciones y una vez que se crea un RDD, no se puede cambiar, sino que se creará un nuevo RDD.

Una característica importante a través de la cual Spark superó las limitaciones de Hadoop es a través de RDD porque en lugar de replicar los datos, los Conjuntos de datos distribuidos resilientes (RDD) mantienen los datos a través de los nodos en un clúster y recuperarán los datos con la ayuda del gráfico de linaje. En Hadoop, los datos se almacenaban de forma redundante entre las máquinas que proporcionaban la propiedad de tolerancia a fallos. Por lo tanto, un RDD es una abstracción fundamental proporcionada por Spark para datos distribuidos y computación.

Las diferentes formas de crear un RDD son

  • Cargando un conjunto de datos externo
  • Pasando los datos a través del método Parallelize
  • Al transformar un RDD existente

Analicemos cada uno de ellos en detalle, pero antes de eso, necesitamos configurar una carcasa de chispa que es el programa controlador de la chispa. En este artículo, hemos incluido las líneas de código en scala. Los RDD pueden tener cualquier tipo de objetos Python, Java o Scala, incluidas las clases definidas por el usuario. Por lo tanto, a continuación se detallan los pasos a seguir para lanzar spark-shell.

Lanzamiento de Spark-Shell

Paso 1: descargue y descomprima la chispa. Descargue la versión actual de spark desde el sitio web oficial. Descomprima el archivo descargado en cualquier ubicación de su sistema.

Paso 2: Configurar Scala

  • Descargar scala de scala lang.org
  • Instalar scala
  • Establezca la variable de entorno SCALA_HOME y establezca la variable PATH en el directorio bin de scala.

Paso 3: Comience el spark-shell. Abra el símbolo del sistema y navegue a la carpeta bin de spark. Ejecutar- spark-shell.

Diferentes formas de crear RDD

1. Cargando un conjunto de datos externo

El método textFile de SparkContext se usa para cargar los datos de cualquier fuente que a su vez crea un RDD. Spark admite una amplia gama de fuentes de las que se pueden extraer los datos, como Hadoop, HBase, Amazon S3, etc. Una fuente de datos es un archivo de texto que hemos discutido aquí. Además de los archivos de texto, la API scala de spark también admite otros formatos de datos como wholeTextFiles, archivos de secuencia, Hadoop RDF y muchos más.

Ejemplo

val file = sc.textFile("/path/textFile.txt"") // relative path

La variable llamada archivo es un RDD, creado a partir de un archivo de texto en el sistema local. En spark-shell, el objeto de contexto de chispa (sc) ya se ha creado y se utiliza para acceder a la chispa. TextFile es un método de una clase org.apache.spark.SparkContext que lee un archivo de texto de HDFS, un sistema de archivos local o cualquier URI de sistema de archivos compatible con Hadoop, y lo devuelve como un RDD de cadenas. Por lo tanto, la entrada para este método es un URI y divide los datos en los nodos.

2. Pasando los datos a través del método Parallelize

Otra forma de crear RDD es tomar una colección existente en memoria y pasarla al método de paralelismo de SparkContext. Si bien aprender chispa, esta forma de crear RDD es bastante útil, ya que podemos crear los RDD en el shell y también realizar operaciones. Apenas se usa fuera de las pruebas y la creación de prototipos, ya que requiere que todos los datos estén disponibles en la máquina local. Un punto importante sobre la paralelización es el número de particiones en las que se divide la colección. Podemos pasar el número (particiones) como un segundo parámetro en el método de paralelización y, si no se especifica el número, Spark decidirá en función del clúster.

  • Sin una serie de particiones:

val sample = sc.parallelize(Array(1, 2, 3, 4, 5))

  • Con una serie de particiones:

val sample = sc.parallelize(List(1, 2, 3, 4, 5), 3)

3. Al transformar un RDD existente

Hay dos tipos de operaciones que se realizan a través de RDD.

  1. Transformaciones
  2. Comportamiento

Las transformaciones son operaciones en RDD que resultan en la creación de otro RDD, mientras que las acciones son las operaciones que devuelven un valor final al programa del controlador o escriben datos en un sistema de almacenamiento externo. Mapa y filtro son algunas operaciones de transformación. Considere un ejemplo de filtrado de algunas líneas de un archivo de texto. Inicialmente, se crea un RDD cargando el archivo de texto. Luego aplicamos una función de filtro que filtrará un conjunto de líneas del archivo de texto. El resultado también será un RDD. La operación de filtro no cambia la entrada RDD existente. En cambio, devuelve un puntero a un RDD completamente nuevo, que son los errores rojos. Todavía podemos usar el RDD de entrada para otros cálculos.

val inputRDD = sc.textFile("log.txt")val errorsRDD = inputRDD.filter(line => line.contains("error"))

El siguiente ejemplo muestra el mismo concepto de transformación para una función de mapa. El resultado es el RDD que se ha generado debido a la función de Mapa. En la operación de mapa, se definirá la lógica y esa lógica particular se aplicará a todos los elementos del conjunto de datos.

val inputRDD = sc.parallelize(List(10, 9, 8, 7, 6, 5))val resultRDD = inputRDD.map(y => y * y)println(resultRDD.collect().mkString(", "))

Puntos importantes para recordar

  • Entre todos los marcos que están actualmente disponibles, Apache spark es el último y está ganando popularidad debido a sus características únicas y enfoque simple. Elimina todas las desventajas que plantea Hadoop, además de mantener la propiedad de escalabilidad y tolerancia a fallas de MapReduce. Para lograr estos objetivos, la plataforma spark introduce el concepto de RDD.
  • Existen principalmente tres formas en que se puede crear un RDD, donde la más básica es cuando cargamos el conjunto de datos.
  • El método de paralelización es ampliamente solo para fines de prueba y aprendizaje.
  • Una operación de transformación daría como resultado un RDD.

Artículos recomendados

Esta ha sido una guía para RDD en Spark. Aquí también hemos discutido diferentes formas de crear RDD, cómo iniciar Spark-Shell con puntos importantes. También puede consultar nuestros artículos para obtener más información.

  1. ¿Qué es el RDD?
  2. Cómo instalar Spark
  3. Spark Streaming
  4. Spark DataFrame
  5. ¿Qué son los comandos de Spark Shell?
  6. Guía de la lista de comandos de shell de Unix

Categoría: