Cómo crear un proyecto de Apache Spark con IntelliJ

Última actualización: 02/06/2021

Este artículo te enseñará a crear un nuevo proyecto desde cero con Apache Spark usando el IDE IntelliJ y Scala con SBT. Si quieres empezar a desarrollar tus aplicaciones Spark de una manera muy potente no te lo pierdas.

Proyecto de Spark con Scala en IntelliJ

Prerrequisitos del Proyecto

Para empezar, debes tener instalado Java en tu máquina. Es recomendable usar versiones de la JDK 8 o superior.

También, debes instalar el IDE IntelliJ IDEA. En su web puedes descargar la versión community que es gratuita y de uso libre. Este es un IDE que me encanta y de los más usados para proyectos Java junto a Eclipse. Es muy potente y extensible con todos los plugins que vas a necesitar para tus proyectos.

Configuración del IDE IntelliJ para un proyecto Scala

Para comenzar nuestro proyecto de Apache Spark en Scala, nos interesa configurar el IDE con los plugins necesarios para que cree la estructura de un proyecto en un entorno de SBT y Scala.

SBT es una herramienta similar a Maven para construir proyectos con Scala o Java. Es open source y permite gestionar las dependencias de manera sencilla, lo que lo convierte en prácticamente un estándar en la comunidad de programadores de Scala.

Desde la pantalla de bienvenida al abrir el IDE o bien en la sección de plugins, podremos instalar y activar el plugin de Scala y SBT. Una vez instalado, IntelliJ nos avisará cuando encuentre una nueva actualización del plugin disponible para descargar.

Plugin de Scala en IntelliJ
Plugin de Scala en IntelliJ

Una vez instalados, ya nos reconocerá la estructura de los proyectos y la sintaxis del lenguaje.

Creación y Configuración del Proyecto de Apache Spark

El primer paso consiste en crear un nuevo proyecto. IntelliJ nos mostrará un menú de creación de nuevo proyecto con opciones. En el menú de la izquierda seleccionaremos Scala y a continuación SBT y hacemos click en siguiente.

Creación de nuevo proyecto de SBT en Intellij
Creación de nuevo proyecto de SBT en Intellij

Una vez que hemos creado el proyecto, podremos navegar por los directorios creados. Como vemos, en el directorio src situaremos nuestro código fuente. En concreto, deberemos navegar a src/main/scala para situar nuestros ficheros.

Nuevo proyecto SBT vacío
Nuevo proyecto SBT vacío

El IDE nos crea automáticamente un fichero build.sbt en la raíz del proyecto. Este fichero incluye toda la definición del proyecto en SBT, por lo que es el lugar donde deberemos añadir las dependencias que necesitemos. En este caso, configuramos el proyecto con nombre scala-demo y la versión de Scala que usará será la 2.12.14.

A continuación, al final del fichero build.sbt especificamos la dependencia spark-core en la versión 3.1.2 para que se añada al proyecto.

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "3.1.2"
)
Dependencias y librerías de Spark en SBT
Dependencias y librerías de Spark en SBT

Cuando la hemos añadido, podemos refrescar los cambios de sbt haciendo click en el icono de la derecha como se muestra en la imagen a continuación. Esto nos actualizará el proyecto, descargando la nueva dependencia y reconociendo el código.

Refrescar cambios de SBT en Intellij
Refrescar cambios de SBT en Intellij

Implementación y Código de pruebas de Spark

Ahora, vamos a crear un nuevo objeto de Scala que llamaremos Demo. Para abrir el menú de creación hacemos click derecho en el directorio src/main/scala y seleccionaremos New – Scala Class.

Creación de nuevo objeto de Scala
Creación de nuevo objeto de Scala

Se nos abrirá el fichero Demo.scala vacío, simplemente con el nombre del objeto. Aquí, vamos a escribir un código sencillo de Spark para comprobar que todo funciona correctamente. Este código tiene la definición de un main en el que se inicializa el SparkContext. A continuación, definimos un pequeño dataset (en este caso con tres valores).

Después, creamos un RDD y lo recorremos imprimiendo por pantalla sus elementos.

import org.apache.spark.{SparkConf, SparkContext}

object Demo {

  def main(args: Array[String]): Unit = {

    val conf = new SparkConf().setAppName("Demo").setMaster("local[1]")
    val sc = SparkContext.getOrCreate(conf)

    val data = Seq(
      (10, "Oscar"),
      (11, "Oscarfmdc"),
      (12, "Ofernandez")
    )

    val rdd = sc.parallelize(data)
    rdd.foreach(item => {
      println(item)
    })

  }
}

Cuando tenemos el código listo, podremos ejecutarlo haciendo click derecho en el área del código y seleccionando Run ‘Demo’.

Ejecución del código de prueba
Ejecución del código de prueba

Si todo es correcto, el IDE nos mostrará en el área inferior la terminal con todo el log de ejecución, donde se imprimirán los tres elementos que hemos creado en nuestro programa de prueba.

Resultado de la ejecución de prueba
Resultado de la ejecución de prueba

Podemos crear un repositorio sencillo en Github con este proyecto base o esqueleto de Apache Spark con Scala y SBT para reutilizar en nuestros proyectos futuros fácilmente.

Formación y Cursos Recomendados de Spark y Scala

Aquí tienes mis tres cursos recomendados para aprender a desarrollar aplicaciones de Apache Spark con Scala desde cero. Te enseñarán todos los conceptos clave para desenvolverte con Scala y Apache Spark. Dos tecnologías muy demandadas para ingenieros de datos que te servirán en tu carrera profesional.

Domina Apache Spark 2.0 con Scala, curso intensivo

Domina Apache Spark 2.0 con Scala, curso intensivo

Curso intensivo en español en el que aprenderás a usar Apache Spark de forma práctica para desarrollar aplicaciones y ejecutarlas.

Curso aprender Apache Spark con Scala

Aprende Spark con Scala

Este curso es muy popular para aprender Apache Spark con Scala. Sigue un estilo muy práctico y es fácil de entender en inglés. Además aprenderás conceptos de computación distribuida y de proyectos de ingeniería.


¡Echa un ojo a mis listas de reproducción de Big Data y suscríbete al canal de Youtube para no perderte ningún vídeo nuevo!

Si te ayuda el contenido del blog, considera unirte a la lista de correo para estar al día de Big Data y cupones de formación

Deja una respuesta