Curso de Fundamentos de Spark para Big Data

Curso de Fundamentos de Spark para Big Data

Óscar Gutiérrez Castillo

Óscar Gutiérrez Castillo

RDD y DataFrames

7/25

Lectura

Todas las aplicaciones en Spark poseen un manejador central de programa (Driver) y varios ejecutores que se crean a lo largo del clúster, estas son las computadoras que realizarán las tareas en paralelo y finalmente devolverán los valores al driver, la aplicación central.

...

Regístrate o inicia sesión para leer el resto del contenido.

Aportes 7

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

con humildad les comparto mis apuntes sobre el curso, es buenísimo, y si le hacen fork dejen su Estrellita en el repo, devuelvan algo a la comunidad de platzi, y nunca paren de aprender.

https://github.com/rb-one/Cuso_Introductorio_de_Spark/blob/master/Notes/notes.md

¿Qué diferencia un dataset de un dataframe?
Hemos visto ya que tanto un dataset como un dataframe son conjuntos de datos organizados en estructuras rectangulares en forma de tabla o matriz, que almacenan sus datos en filas y columnas y con unas variables que corresponden a unos objetos.

Lo que diferencia a un dataframe de un dataset es que un dataframe es un dataset que a la vez está organizado en columnas, de modo que en el dataframe tendremos los datos estructurados y cada columna con su nombre correspondiente.

Las matrices almacenan un único tipo de datos pero en las matrices del dataframe se aceptan valores alfanuméricos por lo que otra característica que les diferencia es que el dataframe puede contener distintos tipos de datos.

Esta organización nos facilitará y hará más sencillo consultar, modificar o transformar el conjunto de datos contenidos en la hoja de datos.

Si fueras el programador para el desarrollo de una solución Big Data que se desarrollará mediante lenguaje de programación R ¿qué estructura de datos escogerías: datasets o dataframes

great! un poco confuso jaja

Una de las cosas que me sorprende mucho es de lo que he entendido hasta ahorita es que los RDD (DataFrames y todos los que se derivan de RDD también), están pensados para soportar grandes volúmenes de datos de manera distribuida (lógicamente el conjunto de datos puede ser uno sólo, pero físicamente dicho conjunto puede estar dividido en n servidores). Me imagino la siguiente situación: que sería procesar un conjunto de datos de unos 50 petas, podríamos intentar procesar dicha data con python puro o con Pandas y sus dataFrames pero creo que la memoria se nos quedaría corta, al usar Spark podemos construir un programa que trate dicho conjunto de datos de manera simple y por detrás spark gestiona cómo distribuir semejante cantidad de datos.
De momento es lo que he entendido. Sigamos.

📌 Resumen
Todas las aplicaciones en Spark poseen:

  • Un manejador central de programa (Driver) .
  • Varios ejecutores que se crean a lo largo del clúster.
  • Los ejecutores son las computadoras que realizan las tareas en paralelo y finalmente devuelven los valores al driver, la aplicación central.

En visión general, un RDD puede ser visto como un set de datos los cuales soportan solo dos tipos de operaciones: transformaciones y acciones:

  • Las transformaciones permiten crear un nuevo RDD a partir de uno previamente existente,
  • Mientras que las acciones retornan un valor al driver de la aplicación.

El núcleo de operación del paradigma de Spark es la ejecución perezosa (Lazy), es decir que las transformaciones solo serán calculadas posterior a una llamada de acción.

El pero que podemos encontrar con los RDD es que no son correctamente tratados por el Garbage collector y cuando las lógicas de operación se hacen complejas, su uso puede resultar poco práctico, aquí entran los DataFrames.

Los DataFrames (al igual que los RDD) pueden ser creados a partir de archivos, tablas tipo Hive, bases de datos externas y RDD o DataFrames existentes. El primer detalle que salta cuando creamos un DataFrame es que poseen columnas nombradas, lo que a nivel conceptual es como trabajar con un DataFrame de Pandas, pero con todos los beneficios y la optimización que le otorga los sistemas Catalyst y Tungsten.

Excelente lectura