Cómo crear un proyecto de Apache Spark con IntelliJ

  • Tiempo de lectura:11 minutos de lectura
  • Autor de la entrada:
  • Última modificación de la entrada:14/07/2024

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 curso recomendado para aprender a desarrollar aplicaciones de Apache Spark con Scala desde cero. Te enseñará todos los conceptos clave para desenvolverte con Scala y Spark. Dos tecnologías muy demandadas para ingenieros y científicos de datos que sin duda te servirán en tu carrera profesional.


A continuación, el vídeo-resumen. ¡No te lo pierdas!

Esta entrada tiene 4 comentarios

  1. Fernando

    Cómo podemos evitar los mensajes de log?

    1. oscarfmdc

      Hola Fernando, puedes cambiar el nivel de los mensajes de log con

      sc.setLogLevel("WARN")

      Aunque esta configuración no será efectiva con los primeros mensajes. Otra opción es configurarlo mediante un fichero log4j.properties

  2. Hugo.

    Hola , solo me deja crear el objeto Scala en la carpeta project, en la carpeta src/main/scala con botón derecho me salen otras opciones pero no Scala Class. Y si lo creo donde te comento , al ejecutar me sale el error :»Error: no se ha encontrado o cargado la clase principal Demo». Gracias anticipadas

    1. oscarfmdc

      Para poder crear objetos Scala debes marcar el directorio como sources (Mark directory as > Sources Root) además de añadir al proyecto con click derecho > add framework support el framework de Scala.

Deja una respuesta