Tutorial: Criar um aplicativo Scala Maven para Apache Spark no HDInsight usando IntelliJTutorial: Create a Scala Maven application for Apache Spark in HDInsight using IntelliJ

Neste tutorial, você aprenderá a criar um aplicativo Apache Spark escrito em Scala usando o Apache Maven com IntelliJ IDEA.In this tutorial, you learn how to create an Apache Spark application written in Scala using Apache Maven with IntelliJ IDEA. O artigo usa o Apache Maven como o sistema de build e começa com um arquétipo Maven existente para Scala fornecido pelo IntelliJ IDEA.The article uses Apache Maven as the build system and starts with an existing Maven archetype for Scala provided by IntelliJ IDEA. Criar um aplicativo Scala no IntelliJ IDEA envolve as seguintes etapas:Creating a Scala application in IntelliJ IDEA involves the following steps:

  • Usar o Maven como o sistema de compilação.Use Maven as the build system.
  • Atualize o arquivo do POM (Modelo de Objeto do Projeto) para resolver as dependências do módulo Spark.Update Project Object Model (POM) file to resolve Spark module dependencies.
  • Escreva seu aplicativo em Scala.Write your application in Scala.
  • Gere um arquivo jar que pode ser enviado aos clusters HDInsight Spark.Generate a jar file that can be submitted to HDInsight Spark clusters.
  • Executar os aplicativos em um cluster do Spark usando Livy.Run the application on Spark cluster using Livy.

Neste tutorial, você aprenderá como:In this tutorial, you learn how to:

  • Instalar o plug-in Scala para IntelliJ IDEAInstall Scala plugin for IntelliJ IDEA
  • Use IntelliJ para desenvolver um aplicativo Scala MavenUse IntelliJ to develop a Scala Maven application
  • Criar um projeto de Scala autônomoCreate a standalone Scala project

Pré-requisitosPrerequisites

Instalar o plug-in Scala para IntelliJ IDEAInstall Scala plugin for IntelliJ IDEA

Siga estas etapas para instalar o plug-in Scala:Perform the following steps to install the Scala plugin:

  1. Abra o IntelliJ IDEA.Open IntelliJ IDEA.

  2. Na tela de boas-vindas, navegue até Configurar > Plug-ins para abrir a janela Plug-ins.On the welcome screen, navigate to Configure > Plugins to open the Plugins window.

    Habilitar o plug-in do Scala no IntelliJ IDEA

  3. Selecione Instalar para o plug-in Scala caracterizado na nova janela.Select Install for the Scala plugin that is featured in the new window.

    Instalar o plug-in do Scala no IntelliJ IDEA

  4. Depois que o plug-in foi instalado com êxito, você deve reiniciar o IDE.After the plugin installs successfully, you must restart the IDE.

Use o IntelliJ para criar o aplicativoUse IntelliJ to create application

  1. Inicie o IntelliJ IDEA e selecione Criar novo projeto para abrir a janela Novo projeto.Start IntelliJ IDEA, and select Create New Project to open the New Project window.

  2. Selecione Azure Spark/HDInsight no painel esquerdo.Select Azure Spark/HDInsight from the left pane.

  3. Selecione Projeto Spark (Scala) na janela principal.Select Spark Project (Scala) from the main window.

  4. Na lista suspensa Ferramenta de build, selecione uma das seguintes opções:From the Build tool drop-down list, select one of the following:

    • Maven para obter suporte ao assistente de criação de projetos Scala.Maven for Scala project-creation wizard support.
    • SBT para gerenciar as dependências e para criar no projeto Scala.SBT for managing the dependencies and building for the Scala project.

    A caixa de diálogo Novo Projeto no IntelliJ

  5. Selecione Avançar.Select Next.

  6. Na janela Novo Projeto, forneça as seguintes informações:In the New Project window, provide the following information:

    PropriedadeProperty DESCRIÇÃODescription
    Nome do projetoProject name Insira um nome.Enter a name.
    Local do projetoProject location Insira o local desejado para salvar o projeto.Enter the desired location to save your project.
    SDK do projetoProject SDK Isso ficará em branco na primeira utilização do IDEA.This will be blank on your first use of IDEA. Selecione Novo... e navegue até o JDK.Select New... and navigate to your JDK.
    Versão do SparkSpark Version O assistente de criação integra a versão apropriada para o SDK do Spark e o SDK do Scala.The creation wizard integrates the proper version for Spark SDK and Scala SDK. Se a versão do cluster do Spark for inferior a 2.0, selecione Spark 1.x.If the Spark cluster version is earlier than 2.0, select Spark 1.x. Caso contrário, selecione Spark 2.x.Otherwise, select Spark2.x. Esse exemplo usa o Spark 2.3.0 (Scala 2.11.8) .This example uses Spark 2.3.0 (Scala 2.11.8).

    Seleção do SDK do Spark no IntelliJ IDEA

  7. Selecione Concluir.Select Finish.

Criar um projeto de Scala autônomoCreate a standalone Scala project

  1. Inicie o IntelliJ IDEA e selecione Criar novo projeto para abrir a janela Novo projeto.Start IntelliJ IDEA, and select Create New Project to open the New Project window.

  2. Selecione Maven no painel esquerdo.Select Maven from the left pane.

  3. Especifique um SDK do projeto.Specify a Project SDK. Se estiver em branco, selecione Novo… e navegue até o diretório de instalação do Java.If blank, select New... and navigate to the Java installation directory.

  4. Marque a caixa de seleção Criar do arquétipo.Select the Create from archetype checkbox.

  5. Na lista de arquétipos, selecione org.scala-tools.archetypes:scala-archetype-simple.From the list of archetypes, select org.scala-tools.archetypes:scala-archetype-simple. Esse arquétipo cria a estrutura de diretório certa e baixa as dependências padrão necessárias para gravar o programa Scala.This archetype creates the right directory structure and downloads the required default dependencies to write Scala program.

    Criar projeto do Maven no IntelliJ IDEA

  6. Selecione Avançar.Select Next.

  7. Forneça os valores relevantes para GroupId, ArtifactId e versão.Provide relevant values for GroupId, ArtifactId, and Version. Os valores a seguir são usados neste tutorial:The following values are used in this tutorial:

    • GroupId: com.microsoft.spark.exampleGroupId: com.microsoft.spark.example
    • ArtifactId: SparkSimpleAppArtifactId: SparkSimpleApp
  8. Selecione Avançar.Select Next.

  9. Verifique as configurações e selecione Avançar.Verify the settings and then select Next.

  10. Verifique o nome de projeto e local e, em seguida, selecione Concluir.Verify the project name and location, and then select Finish. A importação do projeto levará alguns minutos.The project will take a few minutes to import.

  11. Após a importação do projeto, no painel esquerdo, navegue até 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. Clique com o botão direito do mouse em MySpec e selecione Excluir… . Você não precisa desse arquivo para o aplicativo.Right-click MySpec, and then select Delete.... You do not need this file for the application. Selecione OK na caixa de diálogo.Select OK in the dialog box.

  12. Nas etapas subsequentes, você atualizará pom.xml para definir as dependências para o aplicativo Spark Scala.In the subsequent steps, you update the pom.xml to define the dependencies for the Spark Scala application. Para que essas dependências sejam baixadas e resolvidas automaticamente, você deve configurar o Maven adequadamente.For those dependencies to be downloaded and resolved automatically, you must configure Maven accordingly.

  13. No menu Arquivo, selecione Configurações para abrir a janela Configurações.From the File menu, select Settings to open the Settings window.

  14. Na janela Configurações, navegue até Build, Execução, Implantação > Ferramentas de Build > Maven > Importando.From the Settings window, navigate to Build, Execution, Deployment > Build Tools > Maven > Importing.

  15. Marque a caixa de seleção Importar projetos Maven automaticamente.Select the Import Maven projects automatically checkbox.

  16. Selecione Aplicar e, depois, OK.Select Apply, and then select OK. Em seguida, você retornará à janela do projeto.You will then be returned to the project window.

    Configurar Maven para downloads automáticos

  17. No painel esquerdo, navegue até src > main > scala > com.microsoft.spark.example e clique duas vezes em Aplicativo 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. Substitua o código de exemplo existente pelo código a seguir e salve as alterações.Replace the existing sample code with the following code and save the changes. Esse código lê os dados no HVAC.csv (disponível em todos os clusters Spark HDInsight), recupera as linhas com apenas um dígito na sexta coluna e grava a saída em /HVACOut no contêiner padrão de armazenamento do cluster.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. No painel esquerdo, clique duas vezes em pom.xml.In the left pane, double-click pom.xml.

  20. Dentro de <project>\<properties>, adicione os seguintes 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. Dentro de <project>\<dependencies>, adicione os seguintes 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>
    

    Salve as alterações a pom.xml.Save changes to pom.xml.

  22. Crie o arquivo .jar.Create the .jar file. O IntelliJ IDEA permite a criação de JAR como um artefato de um projeto.IntelliJ IDEA enables creation of JAR as an artifact of a project. Execute as seguintes etapas:Perform the following steps.

    1. No menu Arquivo, selecione Estrutura do Projeto… .From the File menu, select Project Structure....

    2. Na janela Estrutura do projeto, navegue até Artefatos > o símbolo de adição + > JAR > De módulos com dependências… .From the Project Structure window, navigate to Artifacts > the plus symbol + > JAR > From modules with dependencies....

      Adicionar JAR na estrutura do projeto no IntelliJ IDEA

    3. Na janela Criar JAR de Módulos janela, selecione o ícone de pasta na classe principal caixa de texto.In the Create JAR from Modules window, select the folder icon in the Main Class text box.

    4. Na janela Selecionar classe principal, selecione a classe exibida por padrão e, em seguida, selecione OK.In the Select Main Class window, select the class that appears by default and then select OK.

      Selecionar classe na estrutura do projeto no IntelliJ IDEA

    5. Na janela Criar JAR de Módulos, verifique se a opção extrair para o JAR de destino está selecionada e, em seguida, selecione OK.In the Create JAR from Modules window, ensure the extract to the target JAR option is selected, and then select OK. Essa configuração cria um JAR único com todas as dependências.This setting creates a single JAR with all dependencies.

      JAR do módulo na estrutura do projeto no IntelliJ IDEA

    6. A guia Layout de Saída lista todos os jars incluídos como parte do projeto Maven.The Output Layout tab lists all the jars that are included as part of the Maven project. Você pode selecionar e excluir aqueles dos quais o aplicativo Scala não tem qualquer dependência direta.You can select and delete the ones on which the Scala application has no direct dependency. Para o aplicativo que estamos criando aqui, você pode remover tudo, exceto o último (Saída de compilação SparkSimpleApp).For the application, you are creating here, you can remove all but the last one (SparkSimpleApp compile output). Selecione os jars para excluir e, em seguida, selecione o símbolo negativo - .Select the jars to delete and then select the negative symbol -.

      Excluir saída na estrutura do projeto no IntelliJ IDEA

      Verifique se a caixa Incluir no build do projeto está selecionada, o que garante que o jar seja criado sempre que o projeto for criado ou atualizado.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. Selecione Aplicar e, em seguida, OK.Select Apply and then OK.

    7. Para criar o arquivo jar, navegue até Compilar > Compilar artefatos > Compilar.To create the jar, navigate to Build > Build Artifacts > Build. O projeto será compilado em cerca de 30 segundos.The project will compile in about 30 seconds. O jar de saída é criado em \out\artifacts.The output jar is created under \out\artifacts.

      Saída do artefato do projeto no IntelliJ IDEA

Executar o aplicativo no cluster do Apache SparkRun the application on the Apache Spark cluster

Para executar o aplicativo no cluster, você pode usar as seguintes abordagens:To run the application on the cluster, you can use the following approaches:

Limpar recursosClean up resources

Se não for continuar a usar este aplicativo, exclua o cluster que criou seguindo estas etapas:If you're not going to continue to use this application, delete the cluster that you created with the following steps:

  1. Entre no Portal do Azure.Sign in to the Azure portal.

  2. Na caixa Pesquisar na parte superior, digite HDInsight.In the Search box at the top, type HDInsight.

  3. Selecione Clusters do HDInsight em Serviços.Select HDInsight clusters under Services.

  4. Na lista de clusters do HDInsight exibida, selecione ao lado do cluster que você criou para este tutorial.In the list of HDInsight clusters that appears, select the ... next to the cluster that you created for this tutorial.

  5. Selecione Excluir.Select Delete. Selecione Sim.Select Yes.

Excluir o cluster HDInsight no portal do AzureHDInsight azure portal delete cluster

Próxima etapaNext step

Neste artigo, você aprendeu a criar um aplicativo Scala do Apache Spark.In this article, you learned how to create an Apache Spark scala application. Avance para o próximo artigo para saber como executar esse aplicativo em um cluster do HDInsight Spark usando Livy.Advance to the next article to learn how to run this application on an HDInsight Spark cluster using Livy.