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.
Contenidos
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.
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.
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.
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"
)
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.
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.
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’.
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.
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.
Curso de Programación Funcional con Scala
Este curso aplicado de Scala está disponible en la plataforma de formación online Coursera y consta de cinco partes:
A continuación, el vídeo-resumen. ¡No te lo pierdas!
Cómo podemos evitar los mensajes de log?
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
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
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.