top of page
  • Foto del escritorMicaela Turrin

Spark, un must en ingeniería de datos

Desde que me mudé a España y tuve que volver a buscar trabajo como data engineer, un 70% de las empresas me pidieron Spark. Tuve que leer y ver varios videos para entender como funciona. Para que no te comas el viaje como yo, acá va mi resumen.



Alexa, ¿qué es Spark?


Spark es un framework de trabajo para el desarrollo de grandes datos o big data y se preocupa de la velocidad y continuidad del procesamiento de datos, en contraparte de Hadoop que se preocupa por un almacenamiento grande de datos.


Podemos utilizar múltiples lenguajes

  • Java

  • Scala (Spark corre nativamente aquí)

  • Python

  • R

Es importante señalar que NO es una base de datos.


OLAP: Base de datos tradicional en tiempo real

OLAP: Base de datos tradicional en tiempo real


Spark debe estar conectado a un Data warehouse para poder aprovechar toda su funcionalidad. En términos de arquitectura, Spark se divide en dos componentes principales: el motor de procesamiento y el administrador de clúster. El motor de procesamiento es responsable de la ejecución de tareas de procesamiento de datos, mientras que el administrador de clúster es responsable de la gestión de los recursos del clúster, como la asignación de tareas a los nodos del clúster.


Historia

  • Nace en 2009 en la Universidad Berkeley

  • Hereda de Hadoop

  • Version3 fue liberada en Junio 2020

Spark VS Hadoop

  • Spark se enfoca en procesamiento de datos desde la memoria RAM.

  • Posee naturalmente un modulo para Machine Learning, streaming y grafos.

  • No depende de un sistema de archivos.


Componentes de Spark


Las dos principales que soporta Spark son los RDD y los DataFrames.

La diferencia reside en la estructura que poseen.

Los RDD son el componente mínimo con el cual podemos comunicarnos con Spark, es un lenguaje ensamblador de Spark.



Características de los RDD

  • Principal Abstracción de datos es la unidad básica, existen desde el inicio hasta la versión 3 de Spark.

  • Distribución Los RDD se distribuyen y particionan a lo largo del cluster de maquinas conectadas.

  • Creación simple no tienen una estructura formalmente, adoptan la mas intuitiva (listas, tuplas, etc).

  • Inmutabilidad Posterior a su creación no se pueden modificar, permite persistencia en los datos pero en cierto punto tienes que lanzar un garbage collector para eliminar los RDDs basura para poder limpiar la memoria

  • Ejecución perezosa a menos que se realice una acción.


Todas las transformaciones las realizamos sin problema, realizando una Acción damos vida a lo que estamos creando.



En este ejemplo creamos dos RDD Comala y Paramo sin embargo el archivo pedroParamo.txt podría no existir, sin embargo hasta que yo ejecute el count() (una acción sabremos que hubo un error).



Características de los DataFrame

  • Formato a diferencia de un RDD poseen columnas lo cual les otorga tipos de datos.

  • Optimizacion poseen una mejor implementación, lo cual los hace preferibles (aunque están construidos sobre los RDD).

  • Facilidad de creación Se pueden crear desde una base de datos externa, archivo o RDD existente.


Cuando Usar RDD


-> Cuando te interese controlar el flujo de Spark

-> Si eres usuario de Python, convertir a RDD un conjunto permite mejor control de los datos

-> Estas conectándote a versiones antiguas de Spark.


Cuando Usar DataFrames

-> Si poseemos semánticas de datos complicadas (operaciones muy computadas).

-> Vamos a realizar tareas de alto nivel como filtros, mapeos, agregaciones, promedios o sumas.

-> Si vamos a usar sentencias SQL-like.


Resumen

Los RDD y DataFrames tienen 3 características base

  • Distribuidos

  • Inmutables

  • Perezosos

  • Estructura (solo DataFrame)


En conclusión, Apache Spark es una herramienta poderosa y escalable para el procesamiento de grandes conjuntos de datos en tiempo real. Su capacidad de procesamiento en memoria, su variedad de APIs y bibliotecas, y su capacidad de integración con otras herramientas lo convierten en una opción popular para el procesamiento de datos en la industria y la academia. Es por ello que los equipos están tratando de usar este framework al máximo.



Y vos, ¿estás listo para seguir aprendiendo sobre SSSSSSSSSpark?


Leé más en camonlabs.com/blog


bottom of page