Micaela 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
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