Apache Spark: La Guía Definitiva 2024

Apache Spark guia

Qué es Apache Spark

Apache Spark es un potente motor de procesamiento de Big Data que ha ido ganando popularidad en los últimos años. En esta guía, revisaremos los conceptos básicos de Spark y cómo se puede utilizar para procesar grandes conjuntos de datos.

También discutiremos lo que son los RDD en Spark, algunas de las ventajas de utilizar Spark y aprenderemos las características principales para acabar entendiendo como funciona uno de los mayores motores de procesamiento de Big Data.

💡Al final de esta guía, deberías conocer lo que son los RDD y qué es pySpark… Claves que necesitarás para aprender.

Desarrollado originalmente en la Universidad de California en Berkeley, el proyecto se ha convertido en la plataforma de procesamiento de Big Data más popular en muchos sectores. Las organizaciones pueden utilizarlo para diversos casos de uso  como la ingeniería de datos, los trabajos ETL, las aplicaciones de aprendizaje automático o Machine Learning y los modelos de Deep Learning en clústeres de Spark con una latencia mínima y un alto rendimiento. Así pues, Apache Spark ofrece una solución integral en el mundo del procesamiento de Big Data.

Breve historia de Apache Spark: ¿Cuándo nació Spark?

Apache Spark fue creado originalmente como un proyecto de investigación en el Laboratorio AMPLab de la Universidad de California, Berkeley. El proyecto fue presentado en 2009 y desde entonces se ha convertido en una de las principales plataformas de Big Data para procesamiento distribuido. Inicialmente diseñado para reemplazar la computación MapReduce, Apache Spark actualmente se usa en los sectores empresariales, académicos e industriales.

Quienes ofrecen Apache Spark

Apache Spark ha sido adoptado por compañías como Amazon Web Services, Azure, IBM Watson e Intel. Los clientes lo utilizan para optimizar sistemas de datos masivos reales y llevar a cabo análisis complejos con orígenes de datos amplios. Además, la plataforma interopera con numerosas herramientas tecnológicas populares, como Hadoop, Cassandra y Flink.

¿Por qué aprender Spark?

En el mundo de Big Data, Spark aparece como tecnología top además de Python y SQL (si no sabes que son te propongo que leas Porque aprender Python: 5 razones de peso y ¿Qué es la Programación SQL? Descúbrelo) aparece una tecnología llamada Spark. Esta tencología es muy demandada prácticamente en todos los roles del mundo Big Data, que, si no sabes lo que es, deberías leer esto: Qué es el Big Data. Fíjate:

tecnologías Big Data
Tecnologías más demandadas en Big Data

Estas listas no nos las hemos inventado. Las puedes ver aquí, según el rol que quieras aprender puedes identificar qué deberías aprender:

Herramientas más demandadas en Big Data por rol

Propiedades clave de Spark

Qué son los RDD en Spark: Resilient Distributed Datasets

Estos RDD son tablas grandes de datos donde, al ser tuplas no pueden ser modificables. Así, cada ordenador del clúster opera por separado. Es la manera que Spark tiene de garantizar de que todos tenemos el mismo dataset o conjunto de datos.

rdd spark
Idea de RDD y dinámica en Spark

La manera de transformar o trabajar con Spark es mediante sus acciones y transformaciones evolucionamos estos datos masivos.

En el mundo de la informática y la programación, la eficiencia es clave. Y esto es precisamente lo que ofrece RDD (Resilient Distributed Datasets) en Spark. Los RDD son una estructura de datos fundamental en Spark que permite realizar operaciones de manera distribuida y en paralelo, es decir, en clústeres entre varias máquinas y a la vez.

Tecnologías Big Data. Qué es ETL.
Tecnologías Big Data

No sólo eso, sino que también proporciona una manera sencilla de sobrellevar fallos si caen estos ordenadores trabajadores y recuperarse de ellos sólo, de manera autogestionada. Utilizando estos RDD, los desarrolladores pueden aprovechar al máximo los recursos disponibles, reducir los tiempos de procesamiento y, en definitiva, mejorar los tiempos hasta 100 veces más rápido que Hadoop. ¿Qué más se puede pedir? Sigue leyendo…

Lazy Load y Apache Spark: ¿Qué significan?

Spark se fundamenta en una propiedad llamada LazyLoad. Esto significa que, hasta que no detecte ninguna acción, por defecto, Spark no va a ejecutar lo que le piden.

lazy loading spark
Spark es como nuestro Bulldog: Le da pereza trabajar

Esta técnica no solo ayuda a mejorar la velocidad de carga o trabajo en las ETLs, sino que también reduce la carga del servidor y el consumo de ancho de banda. Internamente, literamente se anotan las tareas que se deben realizar para que, cuando llegue el momento, los realice. Por eso se dice que Spark es un motor de procesamiento de Big Data que proporciona una API fácil de usar para desarrollar aplicaciones distribuidas de alta velocidad.

Transformaciones y Acciones en Spark o Databricks

Las acciones y transformaciones son fundamentales en Spark, ya que permiten manipular y procesar grandes cantidades de datos de manera eficiente. Da igual si utilizamos pySpark, Databricks, Java o cualquier lenguaje. Lo importante será comprender la dinámica de trabajo y la diferencia entre transformaciones y acciones:

  • Transformaciones: Las transformaciones son operaciones que generan un nuevo conjunto de datos a partir de uno existente. Es decir, el resultado de utilizar la función de transformación generará un nuevo RDD. La idea es transformar todo lo que podamos para que después por último hagamos la acción final.
  • Acciones: Para Spark las acciones son aquellas funciones que desencadenan la ejecución sobre un RDD. Principalmente, se ejecutarán todas las transformaciones necesarias hasta llegar a esa acción.

El llamar a una acción en Spark hará que realice la acción. Hasta entonces, simplemente anotará ✍

Funciones de acción y transformación con Spark

A continuación, se muestran algunas acciones y transformaciones con Spark:

Entre las transformaciones más utilizadas se encuentran: map( ), filter( ) y reduce( ) o reduceByKey( ).

Funciones de acción con Apache Spark

Mientras que las acciones incluyen collect( ), count( ) y take( ). También podremos activar las funcionalidades de Spark SQL si convertimos un RDD a DataFrame, recomendable si dominamos SQL y somos noveles en Databricks o Spark.

Ejemplo de código pySpark

A continuación, se muestran ejemplos de acciones y transformaciones con Spark, además de una explicación para mejor comprensión:

* Puedes hacer scroll horizontal con el dedo para ver todos los datos de la tabla

Ejemplo de pySpark – Spark en Python
Código pySpark¿Accion 💣 o Transformación 📖?DescripciónEjemplo
miRDD.map( {funcion} )📖 TransformaciónCada elemento es transformado. aplicando K –> {function} siendo K cada elemento.rdd.map(lambda x: x * 2)
miRDD.flatMap( {funcion} )📖 TransformaciónCada elemento es transformado. A veces, nos interesa que elimine ciertos elementos y queremos aplanar o alisar el resultado.miRDD.flatMap( lambda x: x.split(',') )
miRDD.filter({function}) 📖 TransformaciónDevuelve sólo elementos que cumplen el criterio. En este caso, el nuevo RDD contendrá sólo números pares. Filter requiere de una operación booleana.miRDD.filter(lambda x: x % 2 == 0)
miRDD.reduce( {funcion} )Acción 💣A partir de los valores que hay en común se realiza la operación de reducción. Si se da que la clave se repite se reduce con la operación.miRDD.reduce(lambda x: sum(x) )
miRDD.collect() Acción 💣Desencadena la ejecución de transformaciones anteriores. Muestra por pantalla los elementos. Es nuestro print() de Spark.miRDD.collect()
miRDD.take( n ) Acción 💣 Obtiene n elementos del RDD. Usado para ver un número limitado de elementos, por si son muchos. Desencadena los procesos anteriores.miRDD.take(10)

Gracias a estas funcionalidades, Spark se ha convertido en una herramienta esencial en el mundo del big data y ha revolucionado la forma en que se procesan y analizan los datos a gran escala.

PySpark qué es: Apache Spark y Python se combinan

En la práctica, Apache Spark puede trabajarse con Python. Para ello, se deben dominar los conceptos de MapReduce hablados en Hadoop. La librería se llama pySpark, instalándola y conectándola, podremos combinar Python y Spark.

pySpark Logo
Logo de PySpark: Módulo Spark en Python

Ejemplo de código de contar palabras en pySpark

A continuación, se muestra el código de ejemplo para poder contar las palabras de un libro en Spark. Es el caso típico con el que se empieza a enseñar el framework de Apache Spark. En nuestro caso, utilizamos pySpark porque conocemos la programación.

El contador de palabras de Spark es el ‘Hola Mundo’ de Spark, en el cuaderno Jupyter

spark contador palabras
Ejemplo de código para contador de palabras en Spark.

Ventajas y características de Apache Spark

Los beneficios y características de Apache Spark incluyen:

  • Soporte integrado para los lenguajes de programación más populares (Scala, Java, Python, R)
  • Está diseñado para ser altamente escalable con una arquitectura basada en clusters
  • Está optimizado para la velocidad de procesamiento
  • Ofrece funcionalidades avanzadas como transmisión en directo/Stream Processing o por lotes/batch processing
  • Incluye diversos complementos como Machine Learning Library (MLlib), GraphX y Structured Streaming
  • Ofrece robusta seguridad gracias a integraciones con Hadoop YARN
  • Dispone de una interfaz de usuario amigable para realizar procesamientos distribuidos

Módulos de Apache Spark

Spark incluye numerosos módulos diseñados para acelerar el procesamiento de datos y facilitar la creación de aplicaciones. Los módulos de Apache Spark módulos incluyen:

  • Módulo SQL: Proporciona herramientas para consultar datasets enormes, sean SQL o noSQL, estructurados o no. Spark proporciona una interfaz en formato lenguaje estructurado para consultar y manipular grandes conjuntos de datos.
  • Módulo MLlib: Una colección de bibliotecas que soportan el uso del aprendizaje automático sobre los datos almacenados en Spark.
  • Módulo GraphX: Ofrece funciones avanzadas para trabajar con gráfos basadas en los datos almacenados en Spark.
  • Módulo Streaming: Esta función permite procesar streams de datos en tiempo real para obtener resultados inmediatos.
  • Módulo Spark Streaming: Esta característica se encarga de procesar grandes volúmenes de información y gestionar peticiones en entornos de baja latencia, de respuesta rápida y en tiempo real.
spark, sparksql, spark mlib, graphx
Módulos en Apache Spark

Ejemplo de código pySpark tipo SQL

A continuación, se muestra el ejemplo de código en Python utilizando la funcionalidad del módulo Spark SQL para consultar un archivo CSV. Como se puede ver, se puede consultar como si fuera una Base de Datos SQL:

spark sql pyspark
Ejemplo de uso de SPARK usando el módulo SQL

Últimas consideraciones con Apache Spark

Espero que después de este artículo comprendas las claves del motor Spark, hayas comprendido sus ventajas principales y, sobre todo, hayas visto por que Spark es una auténtica herramienta profesional ganadora como sistema de procesamiento en Tiempo Real.

🛑 ¡Espera! ¿No entiendes nada?

💡 Este artículo es muy avanzado. Recuerda que si es muy técnico y no entiendes nada, deberías empezar desde el principio. ¿Cómo lo puedes hacer? Accede al apartado de Aprende! 💡 y leenos desde ahí. También puedes suscribirte a la Newsletter y no te pierdas las novedades de manera completamente gratuita. Serás el primero en recibir las novedades y artículos sobre… :

  • Conceptos clave sobre Programación, Bases de Datos, Inteligencia Artificial, Big Data…
  • Librerías y frameworks avanzados: Spark, Hadoop, Pandas, IDEs y trucos…
  • Atajos prácticos para aprender sobre lenguajes SQL ó Python con proyectos aplicados
  • CheatSheets, Libros y Cursos
  • Sorteos Exclusivos🎁

📰 Suscribirse a Newsletter

Estudiar Big Data desde Cero. Hadoop. Spark. Python. SQL. Qué es ETL. IA.

Lecturas de interés relacionadas

Preguntas frecuentes

¿Spark qué es y por qué es tan popular en el mundo del procesamiento de Big Data?

Apache Spark es un motor de procesamiento orientado en clúster de código abierto que ayuda a acelerar y agilizar el procesamiento de Big Data en tareas de gran procesamiento donde el volumen de datos es creciente e ingente. Permite a los desarrolladores procesar rápidamente grandes volúmenes de datos aprovechando sus funciones avanzadas, como el almacenamiento en caché en memoria, el streaming en tiempo real y grafos y por otro lado la ventaja de la compatibilidad con muchas bases de datos.

¿Cómo funciona Apache Spark y cuáles son sus principales características y componentes?

Apache Spark es un marco de computación en clúster, de propósito general distribuido, de código abierto, diseñado para el cálculo rápido de grandes conjuntos de datos. Esto permite a los grandes proyectos analizar y procesar rápidamente datos en tiempo real con una fiabilidad, tolerancia a fallos y eficiencia antes no vistas

¿Por qué Apache Spark es tan eficiente en el procesamiento de grandes cantidades de datos?

Porque se basa en la idea de divide y vencerás. Imagínate… Contar palabras es fácil, no es complicado. Sin embargo, hacerlo con el libro del quijote… Cuesta más, ¿Verdad?. Spark se encarga de hacer eso mismo. 

¿Cómo puedes utilizar Apache Spark para procesar eficazmente tus propios proyectos de Big Data?

Primero preguntándote si realmente a largo plazo merece la pena o es necesario. Si no es imprescindible, no te compliques la vida porque añades más tecnologías a vigilar. Si lo necesitas, tendrás que redefinir los procesos para integrar Spark en la empresa y hacer que se integre.

¿Para qué se usa actualmente Apache Spark?

Apache Spark se usa actualmente para aprovechar al máximo los conjuntos de datos masivos. Esto significa que los datos masivos pueden ser procesados y analizados rápidamente, lo que permite obtener resultados actualizados en tiempo real si así se desea. La herramienta mejora la eficiencia del procesamiento, facilita la creación de aplicaciones y ofrece capacidades avanzadas como el aprendizaje automático.

¿Qué es Spark y para qué sirve?

Es un motor de procesamiento bestial, para procesamiento con enfoque big data, es decir, para operar sobre una barbaridad de datos. Vale para Inteligencia Artificial, ETLs, procesos en Tiempo Real… ¡Para un montón de cosas!

¿Qué es un proceso Spark?

Es un proceso que, bajo el paradigma de Hadoop (masivo y en varias máquinas), realiza operaciones con millones de datos. No es más realmente.

¿Cuándo usar Spark?

Cuando tenemos un procesamiento tan masivo que Hadoop no nos es suficiente, cuando queremos utilizar otro lenguaje de programación que no sea exclusivamente Java para Hadoop o bien cuando tenemos procesamiento en Tiempo Real.

¿Qué es y para qué sirve Hadoop?

En pocas palabras, Hadoop es de los primeros frameworks open source para hacer Big Data. En proyectos reales y en másteres que se cursa Big Data se conoce perfectamente. Spark acelera hasta 100 veces más Hadoop.

¡Haz clic para puntuar esta entrada!
(Votos: 4 Promedio: 5)
Escrito por:

Ibon Reinoso

Escribo sobre Programación, Big Data e IA + recomiendo productos tecnológicos para hacer que cualquiera aprenda por su cuenta y entre al mundo digital. Actualmente Arquitecto de Soluciones y Data Scientist Senior. Ex Director del Programa Nacional Big Data en España (+2.500 alumnos +20 ciudades). Creador del blog BigBayData.com.

Ver todas las entradas

Deja una respuesta

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