Diferencias entre RDD, marcos de datos y conjuntos de datos en Spark

Contenidos

Visión general

  • Comprenda la diferencia entre las API de 3 chispas: RDD, marcos de datos y conjuntos de datos
  • Veremos cómo crear RDD, marcos de datos y conjuntos de datos.

Introducción

Han pasado 11 años desde Apache Spark comenzó a existir y, de manera impresionante y continua, se convirtió en la primera opción de los desarrolladores de big data. A los desarrolladores siempre les ha encantado por proporcionar API sencillas y potentes que pueden realizar cualquier tipo de análisis de big data.

Conjuntos de datos de marcos de datos de RDD

Inicialmente, en 2011 se les ocurrió el concepto de RDD, después en 2013 con Dataframes y más tarde en 2015 con el concepto de Datasets. Ninguno de ellos se ha depreciado, aún podemos usarlos todos. En este post, entenderemos y veremos la diferencia entre los tres.

Tabla de contenido

  1. ¿Qué son los RDD?
  2. ¿Cuándo utilizar RDD?
  3. ¿Qué son los marcos de datos?
  4. ¿Qué son los conjuntos de datos?
  5. RDD vs Dataframes vs Datasets?

¿Qué son los RDD?

Los RDD o conjuntos de datos distribuidos resilientes son la estructura de datos fundamental de Spark. Es la colección de objetos que es capaz de almacenar los datos particionados en los múltiples nodos del clúster y además les posibilita hacer el procesamiento en paralelo.

Es tolerante a fallas si realiza múltiples transformaciones en el RDD y después, por cualquier motivo, falla algún nodo. El RDD, en ese caso, es capaz de recuperarse automáticamente.

RDDHay 3 alternativas para crear un RDD:

  1. Paralelar una colección de datos existente
  2. Referencia al archivo de datos externo almacenado
  3. Creando RDD a partir de un RDD ya existente

¿Cuándo utilizar RDD?

Podemos usar RDD en las siguientes situaciones:

  1. Cuando queremos hacer transformaciones de bajo nivel en el conjunto de datos. Leer más sobre Transformaciones RDD: PySpark para realizar Transformaciones
  2. No infiere automáticamente el esquema de los datos ingeridos, necesitamos especificar el esquema de todos y cada uno de los conjuntos de datos cuando creamos un RDD. Aprenda a inferir el esquema del RDD aquí: Creación de canalizaciones de aprendizaje automático con PySpark

¿Qué son los marcos de datos?

Se introdujo por primera vez en Spark versión 1.3 para superar las limitaciones del Spark RDD. Spark Dataframes son la colección distribuida de los puntos de datos, pero aquí, los datos se organizan en las columnas nombradas. Posibilitan a los desarrolladores depurar el código a lo largo del tiempo de ejecución, lo que no estaba permitido con los RDD.

Los marcos de datos pueden leer y escribir los datos en varios formatos como CSV, JSON, AVRO, HDFS y tablas HIVE. Ya está optimizado para procesar grandes conjuntos de datos para la mayoría de las tareas de preprocesamiento, por lo que no necesitamos escribir funciones complejas por nuestra cuenta.

Utiliza un optimizador de catalizador con fines de optimización. Si desea leer más sobre el optimizador de catalizador, le recomiendo encarecidamente que lea este post: Tutorial práctico para analizar datos usando Spark SQL

Veamos cómo crear un marco de datos usando PySpark.

¿Qué son los conjuntos de datos?

Spark Datasets es una extensión de la API de marcos de datos con los beneficios de los RDD y los conjuntos de datos. Es rápido y proporciona una interfaz de tipo seguro. La seguridad de tipos significa que el compilador validará los tipos de datos de todas las columnas en el conjunto de datos durante la compilación solamente y arrojará un error si hay alguna discrepancia en los tipos de datos.

conjuntos de datos

Los usuarios de RDD lo encontrarán algo semejante al código, pero es más rápido que los RDD. Puede procesar de manera eficiente datos estructurados y no estructurados.

Aún no podemos crear conjuntos de datos Spark en Python. La API del conjunto de datos solo está habilitada en Scala y Java.

RDD frente a marcos de datos frente a conjuntos de datos

RDDMarcos de datosConjuntos de datos
Representación de datosRDD es una colección distribuida de ítems de datos sin ningún esquema.Además es la colección distribuida organizada en las columnas nombradas.Es una extensión de Dataframes con más características como seguridad de tipos e interfaz orientada a objetos.
MejoramientoSin motor de optimización incorporado para RDD. Los desarrolladores deben escribir el código optimizado ellos mismos.Utiliza un optimizador de catalizador para la optimización.Además utiliza un optimizador de catalizador con fines de optimización.
Proyección de esquemaAquí, necesitamos establecer el esquema manualmente.Descubrirá automáticamente el esquema del conjunto de datos.Además encontrará automáticamente el esquema del conjunto de datos a través de el motor SQL.
Operación de agregaciónRDD es más lento que los marcos de datos y los conjuntos de datos para realizar operaciones simples como agrupar los datos.Proporciona una API sencilla para realizar operaciones de agregación. Realiza la agregación más rápido que los RDD y los conjuntos de datos.El conjunto de datos es más rápido que los RDD pero un poco más lento que los Dataframes.

Notas finales

En este post, hemos visto la diferencia entre las tres API principales de Apache Spark. Entonces, para concluir, si desea una semántica rica, abstracciones de alto nivel, seguridad de tipos, elija Dataframes o Datasets. Si necesita más control sobre la parte de preprocesamiento, siempre puede usar los RDD.

Le recomiendo que consulte estos recursos adicionales en Apache Spark para impulsar su conocimiento:

Si este post le pareció informativo, compártalo con sus amigos, y además si desea dar alguna sugerencia sobre lo que debería cubrir, no dude en dejarlas en las notas a continuación.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.