Dataframe, Dataset y RDD en R y Spark

Desde los perfiles en Big Data más experimentados como los más juniors podemos encontrar un nexo común, trabajar con datasets, si te dedicas al Data Science o al Aprendizaje Automático y aún no has trabajado con esta representación de los datos, no te preocupes, pronto lo harás porque son la materia prima más predominante en cualquier proyecto de Ciencia de Datos. En el siguiente post, realizaremos una comparativa entre datasets, dataframes y RDD tanto en R como en Spark.

Qué es Dataset

Un dataset no es más que un conjunto de datos que a menudo se encuentran tabulados, su representación es similar a la de una matriz (únicamente en datos estructurados), es decir, es representado por filas y columnas, también es similar a una tabla de una base de datos (tipo relacional).

Cada fila representa un registro del dataset (pueden contener o no un identificador) y las columnas actúan como variables de un dataset que describen a ese registro, por ejemplo, en un entorno bancario tendríamos a la fila o cliente 1, y las columnas o variables que describieran información personal del cliente (Nombre, Apellidos, número de hijos, saldo actual…)

Su principal diferencia con una matriz es que una matriz es estrictamente numérica y un dataset puede contener otro tipo de información como números enteros, decimales o caracteres.

Qué es Dataframe

Si traducimos este término literalmente estaríamos hablando de una hoja o marco de datos. Es la estructura de datos más común en cuando realizamos cualquier análisis estadístico, ya que nos permite tomar muy fácilmente tomar una muestra de los datos y convertir archivos como .csv, .xml o. json entre otros como dataframe.

LEE  El RFM (Recesión, Frecuencia, Análisis Monetario) en la era del Big Data

Principales lenguajes de programación de Dataframes

Los principales lenguajes de programación en manipulación de dataframes son Python y R, siendo los dataframes un tipo de clase especial de este último lenguaje. Por lo general, se almacenarán en memoria para ser accesibles y poder realizar operaciones sobre ellos.

Como podemos comprobar, ya podemos ver las principales diferencias entre los dataset los dataframe, los dataset pueden estar almacenados en repositorios, archivos o en disco, y los dataframe por lo general se guardan en memoria RAM, son obtenidos a través de los dataset.

Imagen 1: Estructura de un dataframe
Imagen 1: Estructura de un dataframe

Resilient Distributed Datasets (RDD)

Uno de los pilares base de Apache Spark, los Resilient Distributed Datasets (RDD), se tratan de datasets tolerantes a fallos, capaces de operar en paralelo (esta es la razón por la que son uno de los pilares base de Spark, ya que Spark, se basa principalmente en procesos paralelizados). Algunas de sus principales características son:

  • Los RDD son un tipo de estructura de Spark
  • No son mutables, es decir, si deseamos realizar una operación sobre un RDD, tendremos obligatoriamente que generar uno nuevo (Para evitar problemas de ineficiencia no se crean copias de los datos, si no grafos tipo DAG, que almacenan todas las funciones de edición sobre un RDD).
  • Suelen crearse a través del tipo de archivos de Hadoop, archivos HDFS (aunque esto no impide que, por ejemplo, creemos un RDD a través de archivos con otra extensión como un. json o .csv, previamente subidos a HDFS)
  • Son distribuidos, es decir, un RDD se encuentra ubicado en diferentes nodos de un clúster, ya que, una tarea habitual trabajando con Apache Spark, es trabajar de forma distribuida en varios cluster, por lo tanto, al encontrarse un RDD en varios cluster, si un cluster o máquina falla, aún tendremos el archivo en los otros cluster o máquinas, por lo tanto, los RDD son también tolerantes a fallos.
LEE  Las 5 habilidades más valoradas en los profesionales de Big Data
datos apache spark big data
Imagen 2: Datos en Apache Spark.

Principales diferencias entre un RDD y Datafranes

Una vez descritos este tipo de estructuras de datos, os ofrecemos las principales diferencias entre ambos.

  • Tanto RDD como los dataframes provienen de datasets.
  • Los RDD necesitan ser subidos a HDFS previamente, los dataframes pueden ser cargados en memoria directamente desde un archivo como por ejemplo un .csv
  • Los RDD son un tipo de estructura de datos especial de Apache Spark, mientras que los dataframes son una clase especial de R.
  • Los RDD son inmutables (su edición va generando el DAG), mientras que los dataframes admiten operaciones sobre los propios datos, es decir, podemos cambiarlos en memoria.
  • Los RDD se encuentran distribuidos entre los cluster, los dataframes en un único cluster o máquina.
  • Los RDD son tolerantes a fallos, los dataframes

Como se puede ver la elección de un tipo de estructura u otra depende intrínsecamente del tipo de proyecto al que nos vayamos a dedicar y la tecnología que vayamos a emplear para ello.

Juan Manuel Moreno, tutor del Master en Big Data en IMF.

Las dos pestañas siguientes cambian el contenido a continuación.
Equipo de profesionales formado esencialmente por profesores y colaboradores con amplia experiencia en las distintas áreas de negocio del mundo empresarial y del mundo académico. IMF Smart Education ofrece una exclusiva oferta de postgrados en tecnología en colaboración con empresa como Deloitte, Indra o EY (masters en Big Data, Ciberseguridad, Sistemas, Deep Learning, IoT) y un máster que permite acceder a la certificación PMP/PMI. Para ello IMF cuenta con acuerdos con universidades como Nebrija, la Universidad de Alcalá y la Universidad Católica de Ávila así como con un selecto grupo de universidades de Latinoamérica.
LEE  Meltdown y Spectre, un agujero de mayor tamaño que WannaCry

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *