Tutorial: Criar um aplicativo Scala Maven para Apache Spark no HDInsight usando IntelliJ
Neste tutorial, você aprenderá a criar um aplicativo Apache Spark escrito em Scala usando o Apache Maven com o IntelliJ IDEA. O artigo usa o Apache Maven como o sistema de build. E começa com um arquétipo do Maven existente para o Scala, fornecido pelo IntelliJ IDEA. Criar um aplicativo Scala no IntelliJ IDEA envolve as seguintes etapas:
- Usar o Maven como o sistema de compilação.
- Atualize o arquivo do POM (Modelo de Objeto do Projeto) para resolver as dependências do módulo Spark.
- Escreva seu aplicativo em Scala.
- Gere um arquivo jar que pode ser enviado aos clusters HDInsight Spark.
- Executar os aplicativos em um cluster do Spark usando Livy.
Neste tutorial, você aprenderá como:
- Instalar o plug-in Scala para IntelliJ IDEA
- Use IntelliJ para desenvolver um aplicativo Scala Maven
- Criar um projeto de Scala autônomo
Pré-requisitos
Um cluster do Apache Spark no HDInsight. Para obter instruções, consulte o artigo sobre como Criar clusters do Apache Spark no Azure HDInsight.
Kit de desenvolvimento Oracle Java. Este tutorial usa o Java versão 8.0.202.
Um Java IDE. Este artigo usa o IntelliJ IDEA Community 2018.3.4.
Azure Toolkit for IntelliJ. Confira Installing the Azure Toolkit for IntelliJ (Instalação do Azure Toolkit for IntelliJ).
Instalar o plug-in Scala para IntelliJ IDEA
Siga as seguintes etapas para instalar o plug-in Scala:
Abra o IntelliJ IDEA.
Na tela de boas-vindas, navegue até Configurar>Plug-ins para abrir a janela Plug-ins.
Selecione Instalar para o Azure Toolkit for IntelliJ.
Selecione Instalar para o plug-in Scala caracterizado na nova janela.
Depois que o plug-in foi instalado com êxito, você deve reiniciar o IDE.
Use o IntelliJ para criar o aplicativo
Inicie o IntelliJ IDEA e selecione Criar novo projeto para abrir a janela Novo projeto.
Selecione Apache Spark/HDInsight no painel esquerdo.
Selecione Projeto Spark (Scala) na janela principal.
Na lista suspensa Ferramenta de build, selecione um dos seguintes valores:
- Maven para obter suporte ao assistente de criação de projetos Scala.
- SBT para gerenciar as dependências e para criar no projeto Scala.
Selecione Avançar.
Na janela Novo Projeto, forneça as seguintes informações:
Propriedade Descrição Nome do projeto Insira um nome. Localização do projeto Insira o local no qual salvar o projeto. SDK do projeto Esse campo ficará em branco na primeira utilização do IDEA. Selecione Novo... e navegue até o JDK. Versão do Spark O assistente de criação integra a versão apropriada 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. Esse exemplo usa o Spark 2.3.0 (Scala 2.11.8) . Selecione Concluir.
Criar um projeto de Scala autônomo
Inicie o IntelliJ IDEA e selecione Criar novo projeto para abrir a janela Novo projeto.
Selecione Maven no painel esquerdo.
Especifique um SDK do projeto. Se estiver em branco, selecione Novo… e navegue até o diretório de instalação do Java.
Marque a caixa de seleção Criar do arquétipo.
Na lista de arquétipos, selecione
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.Selecione Avançar.
Expanda Coordenadas de Artefato. Forneça os valores relevantes para GroupId e ArtifactId. O Nome e a Localização serão preenchidos automaticamente. Os valores a seguir são usados neste tutorial:
- GroupId: com.microsoft.spark.example
- ArtifactId: SparkSimpleApp
Selecione Avançar.
Verifique as configurações e selecione Avançar.
Verifique o nome de projeto e local e, em seguida, selecione Concluir. A importação do projeto levará alguns minutos.
Após a importação do projeto, 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.
Nas etapas subsequentes, você atualizará pom.xml para definir as dependências para o aplicativo Spark Scala. Para que essas dependências sejam baixadas e resolvidas automaticamente, você precisa configurar o Maven.
No menu Arquivo, selecione Configurações para abrir a janela Configurações.
Na janela Configurações, navegue até Build, Execução, Implantação>Ferramentas de Build>Maven>Importando.
Marque a caixa de seleção Importar projetos Maven automaticamente.
Selecione Aplicar e, depois, 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":::
No painel esquerdo, navegue até src>main>scala>com.microsoft.spark.example e clique duas vezes em Aplicativo para abrir App.scala.
Substitua o código de exemplo existente pelo código a seguir e salve as alterações. Esse código lê os dados do HVAC.csv (disponível em todos os clusters do HDInsight Spark). Recupera as linhas que têm apenas um dígito na sexta coluna. Além disso, grava a saída em /HVACOut no contêiner de armazenamento padrão do 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") } }
No painel esquerdo, clique duas vezes em pom.xml.
Dentro de
<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>
Dentro de
<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.
Crie o arquivo .jar. O IntelliJ IDEA permite a criação de JAR como um artefato de um projeto. Execute etapas a seguir.
No menu Arquivo, selecione Estrutura do Projeto… .
Na janela Estrutura do projeto, navegue até Artefatos>o símbolo de adição +>JAR>De módulos com dependências… .
Na janela Criar JAR de Módulos janela, selecione o ícone de pasta na classe principal caixa de texto.
Na janela Selecionar classe principal, selecione a classe exibida por padrão e, em seguida, selecione OK.
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. Essa configuração cria um JAR único com todas as dependências.
A guia Layout de Saída lista todos os jars incluídos como parte do projeto Maven. Você pode selecionar e excluir aqueles dos quais o aplicativo Scala não tem qualquer dependência direta. Para o aplicativo que você está criando aqui, você pode remover tudo, exceto o último (Saída de compilação SparkSimpleApp). Selecione os jars para excluir e, em seguida, selecione o símbolo negativo - .
Verifique se a caixa de seleção Incluir no build do projeto está selecionada. Essa opção garante que o jar seja criado sempre que o projeto for criado ou atualizado. Selecione Aplicar e, em seguida, OK.
Para criar o arquivo jar, navegue até Compilar>Compilar artefatos>Compilar. O projeto será compilado em cerca de 30 segundos. O jar de saída é criado em \out\artifacts.
Executar o aplicativo no cluster do Apache Spark
Para executar o aplicativo no cluster, você pode usar as seguintes abordagens:
Copie o jar do aplicativo para o Azure Storage Blob associado ao cluster. Você pode usar AzCopy, um utilitário de linha de comando, para fazer isso. Há muitos outros clientes também que você pode usar para carregar dados. É possível saber mais sobre eles em Carregar dados para trabalhos do Apache Hadoop no HDInsight.
Use o Apache Livy para enviar um trabalho de aplicativo remotamente para o cluster Spark. Os clusters Spark no HDInsight incluem Livy, que expõe pontos de extremidade REST para enviar remotamente trabalhos do Spark. Para saber mais, consulte Enviar trabalhos do Apache Spark remotamente usando o Apache Livy com clusters Spark no HDInsight.
Limpar os recursos
Se não for continuar a usar este aplicativo, exclua o cluster que criou seguindo estas etapas:
Entre no portal do Azure.
Na caixa Pesquisar na parte superior, digite HDInsight.
Selecione Clusters do HDInsight em Serviços.
Na lista de clusters do HDInsight exibida, selecione … ao lado do cluster que você criou para este tutorial.
Selecione Excluir. Selecione Sim.
Próxima etapa
Neste artigo, você aprendeu a criar um aplicativo Scala do Apache Spark. Avance para o próximo artigo para saber como executar esse aplicativo em um cluster do HDInsight Spark usando Livy.