Tutorial: Criar um aplicativo Scala Maven para Apache Spark no HDInsight usando o IntelliJ

Neste tutorial, você aprenderá a criar um aplicativo Apache Spark escrito em Scala usando o Apache Maven com IntelliJ IDEA. O artigo usa o Apache Maven como o sistema de compilação. E começa com um arquétipo Maven existente para Scala fornecido pelo IntelliJ IDEA. Criar uma aplicação Scala no IntelliJ IDEA envolve os seguintes passos:

  • Utilizar o Maven como o sistema de compilação.
  • Atualizar o ficheiro Project Object Model (POM) (POM) para resolver dependências do módulo do Spark.
  • Escrever a aplicação no Scala.
  • Gerar um ficheiro jar que pode ser submetido para clusters do Spark no HDInsight.
  • Utilizar o Livy para executar a aplicação no cluster do Spark.

Neste tutorial, irá aprender a:

  • Instalar o plug-in do Scala para o IntelliJ IDEA
  • Utilizar o IntelliJ para desenvolver uma aplicação Scala Maven
  • Criar um projeto de Scala autónomo

Pré-requisitos

Instalar o plug-in do Scala para o IntelliJ IDEA

Execute as seguintes etapas para instalar o plug-in Scala:

  1. Abra o IntelliJ IDEA.

  2. Na tela de boas-vindas, navegue até Configurar>plug-ins para abrir a janela Plug-ins.

    Screenshot showing IntelliJ Welcome Screen.

  3. Selecione Instalar para o Kit de Ferramentas do Azure para IntelliJ.

    Screenshot showing IntelliJ Azure Tool Kit.

  4. Selecione Instalar para o plug-in Scala apresentado na nova janela.

    Screenshot showing IntelliJ Scala Plugin.

  5. Após a instalação bem-sucedida do plug-in, tem de reiniciar o IDE.

Utilize o IntelliJ para criar uma aplicação

  1. Inicie o IntelliJ IDEA e selecione Criar novo projeto para abrir a janela Novo projeto .

  2. Selecione Apache Spark/HDInsight no painel esquerdo.

  3. Selecione Spark Project (Scala) na janela principal.

  4. Na lista suspensa Ferramenta de compilação, selecione um dos seguintes valores:

    • Suporte ao assistente de criação de projetos Maven for Scala.
    • SBT para gerenciar as dependências e construir para o projeto Scala.

    Screenshot showing create application.

  5. Selecione Seguinte.

  6. Na janela Novo projeto, forneça as seguintes informações:

    Property Description
    Nome do projeto Introduza um nome.
    Localização do projeto Insira o local para salvar seu projeto.
    SDK do projeto Este campo estará em branco na sua primeira utilização do IDEA. Selecione Novo... e navegue até o JDK.
    Versão Spark O assistente de criação integra a versão adequada para o SDK do Spark e o SDK do Scala. Se a versão do cluster do Spark for anterior à 2.0, selecione Spark 1.x. Caso contrário, selecione Spark2.x. Este exemplo usa o Spark 2.3.0 (Scala 2.11.8).

    IntelliJ IDEA Selecting the Spark SDK.

  7. Selecione Concluir.

Criar um projeto de Scala autónomo

  1. Inicie o IntelliJ IDEA e selecione Criar novo projeto para abrir a janela Novo projeto .

  2. Selecione Maven no painel esquerdo.

  3. Especifique um Project SDK (SDK de Projeto). Se estiver em branco, selecione Novo... e navegue até o diretório de instalação do Java.

  4. Marque a caixa de seleção Criar a partir do arquétipo .

  5. Na lista de arquétipos, selecione org.scala-tools.archetypes:scala-archetype-simple. Esse arquétipo cria a estrutura de diretórios correta e baixa as dependências padrão necessárias para escrever o programa Scala.

    Screenshot shows the selected archetype in the New Project window.

  6. Selecione Seguinte.

  7. Expanda Coordenadas do artefato. Forneça valores relevantes para GroupId e ArtifactId. O nome e a localização serão preenchidos automaticamente. São utilizados os seguintes valores neste tutorial:

    • GroupId: com.microsoft.spark.example
    • ArtifactId: SparkSimpleApp

    Screenshot shows the Artifact Coordinates option in the New Project window.

  8. Selecione Seguinte.

  9. Verifique as definições e selecione Next (Seguinte).

  10. Confirme o nome e a localização do projeto e selecione Finish (Concluir). O projeto levará alguns minutos para ser importado.

  11. Depois que o projeto for importado, no painel esquerdo navegue até 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. Selecione OK na caixa de diálogo.

  12. Nas etapas posteriores, atualize o pom.xml para definir as dependências para o aplicativo Spark Scala. Para que essas dependências sejam baixadas e resolvidas automaticamente, você deve configurar o Maven.

  13. No menu Arquivo, selecione Configurações para abrir a janela Configurações.

  14. Na janela Configurações, navegue até Build, Execution, Deployment>Build Tools>Maven>Importing.

  15. Marque a caixa de seleção Importar projetos Maven automaticamente .

  16. Selecione Aplicar e, em seguida, selecione OK. Em seguida, você retornará à janela do projeto.

    :::image type="content" source="./media/apache-spark-create-standalone-application/configure-maven-download.png" alt-text="Configure Maven for automatic downloads." border="true":::
    
  17. No painel esquerdo, navegue até src>main>scala>com.microsoft.spark.example e clique duas vezes em App para abrir App.scala.

  18. Substitua o código de exemplo existente pelo seguinte código e guarde as alterações. Esse código lê os dados do HVAC.csv (disponível em todos os clusters HDInsight Spark). Recupera as linhas que têm apenas um dígito na sexta coluna. E grava a saída em /HVACOut no contêiner de armazenamento padrão para o 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 do lado esquerdo, faça duplo clique em pom.xml.

  20. Em <project>\<properties>, adicione os seguintes segmentos:

    <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. Em <project>\<dependencies>, adicione os seguintes segmentos:

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_${scala.binary.version}</artifactId>
        <version>2.3.0</version>
    </dependency>
    
    Save changes to pom.xml.
    
  22. Crie o ficheiro .jar. O IntelliJ IDEA permite a criação do JAR como um artefacto de um projeto. Siga os passos seguintes.

    1. No menu Arquivo, selecione Estrutura do projeto....

    2. Na janela Estrutura do projeto, navegue até Artefatos>o símbolo de adição +>JAR>De módulos com dependências....

      `IntelliJ IDEA project structure add jar`.

    3. Na janela Criar JAR a partir de módulos, selecione o ícone de pasta na caixa de texto Classe principal.

    4. Na janela Selecionar classe principal, selecione a classe que aparece por padrão e, em seguida, selecione OK.

      `IntelliJ IDEA project structure select class`.

    5. Na janela Criar JAR a partir de módulos, verifique se a opção de extração para o JAR de destino está selecionada e, em seguida, selecione OK. Esta definição cria um único JAR com todas as dependências.

      IntelliJ IDEA project structure jar from module.

    6. A guia Layout de saída lista todos os jars incluídos como parte do projeto Maven. Pode selecionar e eliminar aqueles em que a aplicação de Scala não tem dependências diretas. Para o aplicativo, você está criando aqui, você pode remover todos, exceto o último (saída de compilação SparkSimpleApp). Selecione os frascos a serem excluídos e, em seguida, selecione o símbolo -negativo .

      `IntelliJ IDEA project structure delete output`.

      Verifique se a caixa de seleção Incluir na compilação do projeto está marcada. Essa opção garante que o jar seja criado sempre que o projeto for criado ou atualizado. Selecione Aplicar e, em seguida, OK.

    7. Para criar o jar, navegue até Build>Build Artifacts>Build. O projeto será compilado em cerca de 30 segundos. O jar de saída é criado em \out\artifacts.

      IntelliJ IDEA project artifact output.

Execute o aplicativo no cluster Apache Spark

Para executar a aplicação no cluster, pode utilizar as seguintes abordagens:

Clean up resources (Limpar recursos)

Se não pretender continuar a utilizar esta aplicação, elimine o cluster que criou com os seguintes passos:

  1. Inicie sessão no portal do Azure.

  2. Na caixa Pesquisar na parte superior, digite HDInsight.

  3. Selecione Clusters HDInsight em Serviços.

  4. Na lista de clusters HDInsight exibida, selecione o botão ... ao lado do cluster que você criou para este tutorial.

  5. Selecione Eliminar. Selecione Yes (Sim).

Screenshot showing how to delete an HDInsight cluster via the Azure portal.

Próximo passo

Neste artigo, você aprendeu como criar um aplicativo Apache Spark scala. Avance para o próximo artigo para saber como executar esta aplicação num cluster do HDInsight Spark com Livy.