Tutorial: Creación de una aplicación de Scala Maven para Apache Spark en HDInsight mediante IntelliJTutorial: Create a Scala Maven application for Apache Spark in HDInsight using IntelliJ

En este tutorial aprenderá a crear una aplicación de Apache Spark escrita en Scala mediante Apache Maven con IntelliJ IDEA.In this tutorial, you learn how to create an Apache Spark application written in Scala using Apache Maven with IntelliJ IDEA. En el artículo se utiliza Apache Maven como el sistema de compilación y comienza con un arquetipo existente de Maven para Scala proporcionado por IntelliJ IDEA.The article uses Apache Maven as the build system and starts with an existing Maven archetype for Scala provided by IntelliJ IDEA. Crear una aplicación de Scala en IntelliJ IDEA conlleva los pasos siguientes:Creating a Scala application in IntelliJ IDEA involves the following steps:

  • Use Maven como el sistema de compilación.Use Maven as the build system.
  • Actualice el archivo del modelo de objetos de proyectos (POM) para resolver las dependencias de módulo de Spark.Update Project Object Model (POM) file to resolve Spark module dependencies.
  • Escriba la aplicación con Scala.Write your application in Scala.
  • Genere un archivo jar que se pueda enviar a los clústeres de HDInsight Spark.Generate a jar file that can be submitted to HDInsight Spark clusters.
  • Ejecute la aplicación en un clúster Spark mediante Livy.Run the application on Spark cluster using Livy.

En este tutorial, aprenderá a:In this tutorial, you learn how to:

  • Instale el complemento de Scala para IntelliJ IDEA.Install Scala plugin for IntelliJ IDEA
  • Usar IntelliJ para desarrollar una aplicación de Scala MavenUse IntelliJ to develop a Scala Maven application
  • Creación de un proyecto de Scala independienteCreate a standalone Scala project

Requisitos previosPrerequisites

Instale el complemento de Scala para IntelliJ IDEA.Install Scala plugin for IntelliJ IDEA

Para instalar el complemento Scala, siga estos pasos:Perform the following steps to install the Scala plugin:

  1. Abra IntelliJ IDEA.Open IntelliJ IDEA.

  2. En la pantalla de bienvenida, vaya a Configure > Plugins (Configurar > Complementos) para abrir la ventana Plugins (Complementos).On the welcome screen, navigate to Configure > Plugins to open the Plugins window.

    Habilitar complemento de Scala

  3. Seleccione Install (Instalar) para el complemento de Scala que se presenta en la nueva ventana.Select Install for the Scala plugin that is featured in the new window.

    Instalar complemento de Scala

  4. Después de que el complemento se instale correctamente, debe reiniciar el IDE.After the plugin installs successfully, you must restart the IDE.

Uso de IntelliJ para crear la aplicaciónUse IntelliJ to create application

  1. Inicie IntelliJ IDEA y seleccione Create New Project (Crear proyecto) para abrir la ventana New Project (Nuevo proyecto).Start IntelliJ IDEA, and select Create New Project to open the New Project window.

  2. Seleccione Azure Spark/HDInsight en el panel izquierdo.Select Azure Spark/HDInsight from the left pane.

  3. Seleccione Spark Project (Scala) (Proyecto de Spark [Scala]) en la ventana principal.Select Spark Project (Scala) from the main window.

  4. En la lista desplegable Build tool (Herramienta de compilación), seleccione una de las siguientes:From the Build tool drop-down list, select one of the following:

    • Maven: para agregar compatibilidad con el asistente para la creación de proyectos de Scala.Maven for Scala project-creation wizard support.
    • SBT para administrar las dependencias y compilar el proyecto de Scala.SBT for managing the dependencies and building for the Scala project.

    Cuadro de diálogo Nuevo proyecto

  5. Seleccione Next (Siguiente).Select Next.

  6. En la ventana New Project (Nuevo proyecto), proporcione la siguiente información:In the New Project window, provide the following information:

    PropiedadProperty DESCRIPCIÓNDescription
    Nombre de proyectoProject name Escriba un nombre.Enter a name.
    Project location (Ubicación del proyecto)Project location Escriba la ubicación deseada para guardar el proyecto.Enter the desired location to save your project.
    Project SDK (SDK del proyecto)Project SDK Se queda en blanco la primera vez que se usa IDEA.This will be blank on your first use of IDEA. Seleccione New... (Nuevo...) y vaya a su JDK.Select New... and navigate to your JDK.
    Versión de SparkSpark Version El asistente de creación integra la versión adecuada de los SDK de Spark y Scala.The creation wizard integrates the proper version for Spark SDK and Scala SDK. Si la versión del clúster de Spark es inferior a la 2.0, seleccione Spark 1.x.If the Spark cluster version is earlier than 2.0, select Spark 1.x. De lo contrario, seleccione Spark 2.x.Otherwise, select Spark2.x. En este ejemplo se usa Spark 2.3.0 (Scala 2.11.8) .This example uses Spark 2.3.0 (Scala 2.11.8).

    Selección del SDK de Spark

  7. Seleccione Finalizar.Select Finish.

Creación de un proyecto de Scala independienteCreate a standalone Scala project

  1. Inicie IntelliJ IDEA y seleccione Create New Project (Crear proyecto) para abrir la ventana New Project (Nuevo proyecto).Start IntelliJ IDEA, and select Create New Project to open the New Project window.

  2. Seleccione Maven en el panel izquierdo.Select Maven from the left pane.

  3. Especifique un SDK de proyecto.Specify a Project SDK. Si está en blanco, seleccione New... (Nuevo...) y vaya al directorio de instalación de Java.If blank, select New... and navigate to the Java installation directory.

  4. Active la casilla Create from archetype (Crear desde arquetipo).Select the Create from archetype checkbox.

  5. En la lista de arquetipos, seleccione org.scala-tools.archetypes:scala-archetype-simple.From the list of archetypes, select org.scala-tools.archetypes:scala-archetype-simple. Este arquetipo crea la estructura de directorios adecuada y descargará las dependencias predeterminadas necesarias para escribir el programa con Scala.This archetype creates the right directory structure and downloads the required default dependencies to write Scala program.

    Crear proyecto de Maven

  6. Seleccione Next (Siguiente).Select Next.

  7. Proporcione los valores correspondientes para GroupId, ArtifactId y Version.Provide relevant values for GroupId, ArtifactId, and Version. Los siguientes valores se utilizan en este tutorial:The following values are used in this tutorial:

    • GroupId: com.microsoft.spark.exampleGroupId: com.microsoft.spark.example
    • ArtifactId: SparkSimpleAppArtifactId: SparkSimpleApp
  8. Seleccione Next (Siguiente).Select Next.

  9. Compruebe la configuración y seleccione Next (Siguiente).Verify the settings and then select Next.

  10. Compruebe el nombre y la ubicación del proyecto, y seleccione Finish(Finalizar).Verify the project name and location, and then select Finish. El proyecto tardará unos minutos en importarse.The project will take a few minutes to import.

  11. Una vez importado el proyecto, en el panel izquierdo, vaya a SparkSimpleApp > src > test > scala > com > microsoft > spark > example.Once the project has imported, from the left pane navigate to SparkSimpleApp > src > test > scala > com > microsoft > spark > example. Haga clic con el botón derecho en MySpec y, luego, seleccione Delete... (Eliminar...). Este archivo no es necesario para la aplicación.Right-click MySpec, and then select Delete.... You do not need this file for the application. Seleccione OK (Aceptar) en el cuadro de diálogo.Select OK in the dialog box.

  12. En los pasos siguientes, actualizará el archivo pom.xml para definir las dependencias de la aplicación de Scala para Spark.In the subsequent steps, you update the pom.xml to define the dependencies for the Spark Scala application. Para que tales dependencias se descarguen y resuelvan automáticamente, debe configurar Maven según corresponda.For those dependencies to be downloaded and resolved automatically, you must configure Maven accordingly.

  13. En el menú File (Archivo), seleccione Settings (Configuración) para abrir la ventana Settings (Configuración).From the File menu, select Settings to open the Settings window.

  14. En la ventana Settings (Configuración), vaya a Build, Execution, Deployment > Build Tools > Maven > Importing (Compilación, ejecución o implementación > Herramientas de compilación > Maven > Importación).From the Settings window, navigate to Build, Execution, Deployment > Build Tools > Maven > Importing.

  15. Active la casilla Import Maven projects automatically (Importar proyectos de Maven automáticamente).Select the Import Maven projects automatically checkbox.

  16. Seleccione Aplicar y luego Aceptar.Select Apply, and then select OK. Volverá a la ventana del proyecto.You will then be returned to the project window.

    Configurar Maven para descargas automáticas

  17. En el panel izquierdo, vaya a src > main > scala > com.microsoft.spark.exampley haga doble clic en App para abrir App.scala.From the left pane, navigate to src > main > scala > com.microsoft.spark.example, and then double-click App to open App.scala.

  18. Reemplace el código de ejemplo existente por el código siguiente y guarde los cambios.Replace the existing sample code with the following code and save the changes. Este código lee los datos de HVAC.csv (disponible en todos los clústeres de HDInsight Spark), recupera las filas que solo tienen un dígito en la sexta columna y escribe el resultado en /HVACOut bajo el contenedor de almacenamiento predeterminado para el clúster.This code reads the data from the HVAC.csv (available on all HDInsight Spark clusters), retrieves the rows that only have one digit in the sixth column, and writes the output to /HVACOut under the default storage container for the cluster.

    package com.microsoft.spark.example
    
    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    
    /**
      * Test IO to wasb
      */
    object WasbIOTest {
      def main (arg: Array[String]): Unit = {
        val conf = new SparkConf().setAppName("WASBIOTest")
        val sc = new SparkContext(conf)
    
        val rdd = sc.textFile("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
        //find the rows which have only one digit in the 7th column in the CSV
        val rdd1 = rdd.filter(s => s.split(",")(6).length() == 1)
    
        rdd1.saveAsTextFile("wasb:///HVACout")
      }
    }
    
  19. En el panel izquierdo, haga doble clic en pom.xml.In the left pane, double-click pom.xml.

  20. En <project>\<properties>, agregue los siguientes segmentos:Within <project>\<properties> add the following segments:

      <scala.version>2.11.8</scala.version>
      <scala.compat.version>2.11.8</scala.compat.version>
      <scala.binary.version>2.11</scala.binary.version>
    
  21. En <project>\<dependencies>, agregue los siguientes segmentos:Within <project>\<dependencies> add the following segments:

       <dependency>
         <groupId>org.apache.spark</groupId>
         <artifactId>spark-core_${scala.binary.version}</artifactId>
         <version>2.3.0</version>
       </dependency>
    

    Guarde los cambios en pom.xml.Save changes to pom.xml.

  22. Cree el archivo .jar.Create the .jar file. IntelliJ IDEA permite crear JAR como un artefacto de un proyecto.IntelliJ IDEA enables creation of JAR as an artifact of a project. Lleve a cabo los siguiente pasos.Perform the following steps.

    1. En el menú File (Archivo), seleccione Project Structure... (Estructura de proyecto).From the File menu, select Project Structure....

    2. En la ventana Project Structure (Estructura de proyecto), vaya a Artifacts > the plus symbol + > JAR > From modules with dependencies... (Artefactos > el símbolo + > JAR > Desde módulos con dependencias).From the Project Structure window, navigate to Artifacts > the plus symbol + > JAR > From modules with dependencies....

      Crear archivo JAR

    3. En la ventana Create JAR from Modules (Crear JAR a partir de módulos), seleccione el icono de carpeta en el cuadro de texto Main Class (Clase principal).In the Create JAR from Modules window, select the folder icon in the Main Class text box.

    4. En el cuadro de diálogo Select Main Class (Seleccionar clase principal), seleccione la clase que aparece de forma predeterminada y, luego, seleccione OK (Aceptar).In the Select Main Class window, select the class that appears by default and then select OK.

      Crear archivo JAR

    5. En la ventana Create JAR from Modules (Crear JAR desde módulos), asegúrese de que está seleccionada la opción Extract to the target JAR (Extraer al archivo JAR de destino) y, después, seleccione OK (Aceptar).In the Create JAR from Modules window, ensure the extract to the target JAR option is selected, and then select OK. Este valor crea un archivo JAR único con todas las dependencias.This setting creates a single JAR with all dependencies.

      Crear archivo JAR

    6. La pestaña Output Layout (Diseño de salida) enumera todos los archivos JAR que forman parte del proyecto Maven.The Output Layout tab lists all the jars that are included as part of the Maven project. Puede seleccionar y eliminar aquellos de los que la aplicación de Scala no tenga ninguna dependencia directa.You can select and delete the ones on which the Scala application has no direct dependency. Para la aplicación que va a crear aquí puede quitar todos, salvo el último (SparkSimpleApp compile output).For the application, you are creating here, you can remove all but the last one (SparkSimpleApp compile output). Seleccione los archivos JAR que va a eliminar y, después, seleccione símbolo negativo - .Select the jars to delete and then select the negative symbol -.

      Crear archivo JAR

      Asegúrese de que la casilla Include in project build (Incluir en compilación del proyecto) esté activada para garantizar que el archivo JAR se crea cada vez que el proyecto se compila o actualiza.Ensure sure the Include in project build checkbox is selected, which ensures that the jar is created every time the project is built or updated. Seleccione Apply (Aplicar) y, después, OK (Aceptar).Select Apply and then OK.

    7. Para crear el archivo JAR, vaya a Build > Build Artifacts > Build (Compilar > Artefactos de compilación > Compilar).To create the jar, navigate to Build > Build Artifacts > Build. El proyecto se compilará al cabo de 30 segundos aproximadamente.The project will compile in about 30 seconds. El archivo JAR de salida se crea en \out\artifacts.The output jar is created under \out\artifacts.

      Crear archivo JAR

Ejecución de la aplicación en el clúster de Apache SparkRun the application on the Apache Spark cluster

Para ejecutar la aplicación en el clúster, puede usar los siguientes enfoques:To run the application on the cluster, you can use the following approaches:

Limpieza de recursosClean up resources

Si no va a seguir usando esta aplicación, elimine el clúster que creó mediante los siguientes pasos:If you're not going to continue to use this application, delete the cluster that you created with the following steps:

  1. Inicie sesión en el Azure Portal.Sign in to the Azure portal.

  2. En el cuadro Búsqueda en la parte superior, escriba HDInsight.In the Search box at the top, type HDInsight.

  3. Seleccione Clústeres de HDInsight en Servicios.Select HDInsight clusters under Services.

  4. En la lista de clústeres de HDInsight que aparece, seleccione el signo ... situado junto al clúster que ha creado para este tutorial.In the list of HDInsight clusters that appears, select the ... next to the cluster that you created for this tutorial.

  5. Seleccione Eliminar.Select Delete. Seleccione .Select Yes.

Eliminación de un clúster de HDInsightDelete an HDInsight cluster

Paso siguienteNext step

En este artículo ha aprendido a crear una aplicación en Scala para Apache Spark.In this article, you learned how to create an Apache Spark scala application. Vaya al siguiente artículo para aprender a ejecutar esta aplicación en un clúster de HDInsight Spark con Livy.Advance to the next article to learn how to run this application on an HDInsight Spark cluster using Livy.