aprende a usar spark con scala en este post

Hace unos días celebramos un webinar junto a Marco Doncel, ingeniero informático y fundador de Shoppermotion, donde descubrimos el potencial de Spark con Scala para el procesamiento de datos. En este post descubrirás cómo empezar a trabajar con esta herramienta y llevarla a tus proyectos.

¿Qué es Spark?

Spark es una plataforma open source muy usada en la industria para el procesamiento de grandes volúmenes de datos y ejecución de cómputo intensivo sobre éstos. Un framework que ofrece gran valor transformando y analizando datos relevantes que ayudan a grandes compañías a tomar mejores decisiones de negocio.

Esta plataforma contiene módulos y librerías para trabajar mejor con los datos que se quieren procesar. Además, Spark es multilenguaje por lo que se puede programar tanto en Scala, Phyton, Java o R. 

¿Por qué programar en Spark con Scala?

Se trata de un lenguaje de programación con recorrido ya que tiene dos décadas en el mercado. Además, Scalable language (Scala), es un lenguaje híbrido entre programación orientada a objetos y programación funcional. Por lo que, al tener las ventajas de uno y otro, es un lenguaje bastante funcional y práctico.

Tiene menos código para realizar algunas funciones en comparación con otros lenguajes. Esto es de utilidad debido a que se puede reducir el código a la mínima expresión y así leerlo más rápido para corregir posibles problemas.

Además, es compatible con la máquina virtual de Java, esto significa que podrás reusar librerías de Java en tus aplicaciones Scala, tendrás compatibilidad con el código en Java y te podrás beneficiar de una comunidad consolidada en el panorama de la programación. 

¿Por qué usar Spark?

Apache Spark es un framework de procesamiento de datos distribuidos diseñado para ser rápido, y se clasifica como de propósito general. Consta de diferentes APIs y módulos que permiten que sea utilizado por una gran variedad de profesionales en todas las etapas del ciclo de vida del dato.

Ventajas de usar Spark

    • Velocidad: optimización en el uso de la memoria RAM.
    • Procesamiento registrado en memoria de los outcome parciales.
    • Es fácil de usar, en comparación con otros frameworks.
    • Acceso a módulos y librerías que abarcan para Machine Learning, inclusión de datos, gráficas, streaming y otras funcionalidades.
    • Dispone de capacidad analítica avanzada.
    • Tolerancia a fallos implícita.
    • Es multilenguaje, como hemos comentado, se puede utilizar 4 lenguajes.
    • Open Source, desarrollado de una manera descentralizada y con la colaboración de diferentes interesados (stakeholders) como son programadores, compañías de software, colaboradores, etc. Por lo tanto, se desarrolla en comunidad y no depende solo de una organización
    • Hasta 100 veces más rápido que Hadoop MapReduce.
    • Es cada vez más popular y utilizado para el BigData por compañías que quieren procesar grandes cantidades de datos en poco tiempo.

¿Cómo funciona una aplicación normal de Spark cuando se lanza al cluster?

Lo primero que debes tener en cuenta es que hay varias entidades:

  • Driver Program: ejecución de la aplicación que se ha solicitado.
  • Cluster Manager: habilita los recursos durante la ejecución de la aplicación.
  • Worker Nodes: Nodos del cluster que contienen uno o más executor, que procesarán las tareas que les mande el Driver Program.

Operaciones MapReduce

El MapReduce se entiende como el conjunto de tareas conmutativas o asociativas que están pensadas para cuando hay una gran cantidad de volumen de datos. El MapReduce abarca diferentes procesos para el tratamiento de datos masivos como el input, Split, map, [combine], suffle & sort, reduce, output.

RDD – Resilient Distributed Dataset

La unidad básica de datos que se utiliza en este ecosistema (o stack) se llama RDD (Resilient Distributed Dataset). Se trata de una lista de datos pero que no está toda junta, sino que está en diferentes máquinas (según el cluster).

Esta colección de datos es inmutable (no se puede cambiar), aunque sí que se pueden aplicar transformaciones u operar con ellos mediante actions.

En cuanto al ciclo de vida del RDD, de una unidad básica se realizan transformaciones de los conjuntos de datos (según los objetivos previstos para cada caso), se aplica una acción y al final obtenemos un resultado. Es decir, si tenemos varios petabytes con información de vuelos comerciales en los últimos años, realizaremos transformations para quedarnos con los datos que nos interesan y podríamos aplicar una action para sumarle un número específico a los RDD (con el objetivo final de facilitarnos un sumatorio de vuelos realizados, por ejemplo). 

Ahora llevemos toda esta teoría a la práctica, y para esto, aquí te dejamos un ejercicio hecho por Marco Doncel, en donde descubrirás cómo funciona el código de Scala con Spark.

 

Si quieres aprender a dominar Scala, Spark y todas las herramientas del ecosistema Big Data, descubre nuestro Full Stack Big Data, AI & ML Bootcamp. Entra a un sector lleno de oportunidades, salarios altos y en donde el paro prácticamente no existe. Descarga aquí el temario del Bootcamp y descúbrelo por completo.

Otras entradas que te pueden interesar:

¡Conoce nuestros Bootcamps!

Descarga el temario y descubre cómo en 6 meses podrás ser un Full Stack DevOps Bootcamp.

¿Quieres más información?