Tutorial: Criar um aplicativo Apache Spark com o IntelliJ usando um workspace do Azure Synapse

Este tutorial mostra como usar o plug-in do Azure Toolkit for IntelliJ para desenvolver aplicativos Apache Spark escritos em Scala e depois enviá-los diretamente do IDE (ambiente de desenvolvimento integrado) IntelliJ para um Pool do Apache Spark sem servidor. Você pode usar o plug-in destas maneiras:

  • Desenvolver e enviar um aplicativo Scala Spark em um Pool do Spark.
  • Acessar seus recursos de pools do Spark.
  • Desenvolver e executar um aplicativo Scala Spark localmente.

Neste tutorial, você aprenderá como:

  • Usar o plug-in Azure Toolkit for IntelliJ
  • Desenvolver aplicativos do Apache Spark
  • Enviar aplicativo para pools do Spark

Pré-requisitos

Criar um aplicativo Scala Spark para um Pool do Spark

  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 Projeto Spark com Exemplos (Scala) na janela principal.

  4. Na lista suspensa Ferramenta de build, selecione um dos seguintes tipos:

    • Maven para obter suporte ao assistente de criação de projetos Scala.
    • SBT para gerenciar as dependências e para criar no projeto Scala.

    IntelliJ IDEA New Project dialog box

  5. Selecione Avançar.

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

    Propriedade Descrição
    Nome do projeto Insira um nome. Este tutorial usa myApp.
    Localização do projeto Insira a localização desejada para salvar o projeto.
    SDK do projeto Isso poderá ficar em branco no primeiro uso 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. Aqui você pode escolher a versão do Spark de que precisa.

    Selecting the Apache Spark SDK

  7. Selecione Concluir. Pode levar alguns minutos antes que o projeto fique disponível.

  8. O projeto do Spark cria automaticamente um artefato para você. Para ver o artefato, execute as seguintes operações:

    a. Na barra de menus, navegue até Arquivo>Estrutura do projeto... .

    b. Na janela Estrutura do Projeto, selecione Artefatos.

    c. Selecione Cancelar depois de exibir o artefato.

    Artifact info in the dialog box

  9. Localize LogQuery em myApp>src>main>scala>sample>LogQuery. Este tutorial usa LogQuery para executar.

    Commands for creating a Scala class from Project

Conectar-se aos seus pools do Spark

Entre na assinatura do Azure para se conectar aos seus pools do Spark.

Entre em sua assinatura do Azure

  1. Na barra de menus, navegue até Exibição>Janelas de Ferramentas>Azure Explorer.

    IntelliJ IDEA shows Azure Explorer

  2. No Azure Explorer, clique com o botão direito do mouse no nó Azure e, em seguida, selecione Entrar.

    IntelliJ IDEA explorer right-click Azure

  3. Na caixa de diálogo Entrar no Azure, escolha Logon do Dispositivo e selecione Entrar.

    IntelliJ IDEA Azure sign-in

  4. Na caixa de diálogo Logon no Dispositivo do Azure, selecione Copiar e Abrir.

    IntelliJ IDEA Azure device login

  5. Na interface do navegador, cole o código e selecione Avançar.

    Microsoft enters code dialog for HDI

  6. Insira suas credenciais do Azure e feche o navegador.

    Microsoft enters e-mail dialog for HDI

  7. Depois que você estiver conectado, a caixa de diálogo Selecionar Assinaturas listará todas as assinaturas do Azure associadas às credenciais. Selecione sua assinatura e escolha Selecionar.

    The Select Subscriptions dialog box

  8. No Azure Explorer, expanda Apache Spark no Synapse para ver os workspaces que estão em suas assinaturas.

    IntelliJ IDEA Azure Explorer main view

  9. Para ver os pools do Spark, você pode expandir ainda mais um workspace.

    Azure Explorer storage accounts

Executar remotamente um aplicativo Scala Spark em um Pool do Spark

Depois de criar um aplicativo Scala, você poderá executá-lo remotamente.

  1. Abra a janela Configurações de Execução/Depuração selecionando o ícone.

    The Submit Spark Application to HDInsight command 1

  2. Na janela da caixa de diálogo Configurações de Execução/Depuração, selecione + e escolha Apache Spark no Azure Synapse.

    The Submit Spark Application to HDInsight command 2

  3. Na janela Configurações de Execução/Depuração, forneça os seguintes valores e, em seguida, selecione OK:

    Propriedade Valor
    Pools do Spark Selecione os pools do Spark nos quais você deseja executar o aplicativo.
    Selecione um Artefato para enviar Deixe a configuração padrão.
    Nome da classe principal O valor padrão é a classe principal do arquivo selecionado. Você pode alterar a classe selecionando as reticência ( ... ) e escolhendo outra classe.
    Configurações de trabalho Você pode alterar os valores e as chaves padrão. Para obter mais informações, confira API REST do Apache Livy.
    Argumentos de linha de comando Você pode inserir argumentos separados por espaço para a classe principal se necessário.
    Arquivos Referenciados e Jars Referenciados você pode inserir os caminhos para os Jars e os arquivos referenciados, se houver. Você também pode procurar arquivos no sistema de arquivos virtual do Azure, que atualmente dá suporte apenas ao cluster ADLS Gen2. Para mais informações: Configuração do Apache Spark e Como carregar recursos no cluster.
    Armazenamento de Upload de Trabalho Expanda para revelar opções adicionais.
    Tipo de armazenamento Selecione Usar o blob do Azure para carregar ou Usar a conta de armazenamento padrão do cluster para carregar na lista suspensa.
    Conta de Armazenamento Insira sua conta de armazenamento.
    Chave de Armazenamento Insira sua chave de armazenamento.
    Contêiner de armazenamento Selecione seu contêiner de armazenamento na lista suspensa depois que Conta de Armazenamento e Chave de Armazenamento tiverem sido inseridas.

    The Spark Submission dialog box 1

  4. Selecione o ícone SparkJobRun para enviar seu projeto para o Pool do Spark selecionado. A guia Trabalho do Spark Remoto no Cluster exibe o andamento da execução do trabalho na parte inferior. Você pode parar o aplicativo selecionando o botão vermelho.

    Apache Spark Submission window

    The Spark Submission dialog box 2

Depurar/executar localmente aplicativos do Apache Spark

Você pode seguir as instruções abaixo para configurar a execução e a depuração locais para seu trabalho do Apache Spark.

Cenário 1: Fazer execução local

  1. Abra a caixa de diálogo Executar/Depurar Configurações, selecione o sinal de mais (+). Em seguida, selecione a opção Apache Spark no Synapse. Insira as informações em Nome e Nome de classe principal para salvar.

    Intellij Run debug configurations local run 1

    • As variáveis de ambiente e a localização de WinUtils.exe são apenas para usuários do Windows.
    • Variáveis de ambiente: A variável de ambiente do sistema poderá ser detectada automaticamente se você a tiver definido antes e não precisar adicioná-la manualmente.
    • Local de WinUtils.exe: Você pode especificar a localização de WinUtils selecionando o ícone de pasta à direita.
  2. Depois, selecione o botão de execução local.

    Intellij Run debug configurations local run 2

  3. Depois que a execução local for concluída, se o script incluir a saída, você poderá verificar o arquivo de saída em data>default.

    Intellij Project local run result 1

Cenário 2: fazer depuração local

  1. Abra o script LogQuery e defina pontos de interrupção.

  2. Selecione o ícone Depuração local para fazer esse procedimento.

    Intellij Project local run result 2

Acessar e gerenciar o workspace do Synapse

Você pode executar operações diferentes no Azure Explorer no Azure Toolkit for IntelliJ. Na barra de menus, navegue até Exibição>Janelas de Ferramentas>Azure Explorer.

Iniciar o workspace

  1. No Azure Explorer, navegue até Apache Spark no Synapse e, em seguida, expanda-o.

    IntelliJ IDEA Azure Explorer main view

  2. Clique com o botão direito do mouse em um workspace e selecione Iniciar workspace. O site será aberto.

    Spark Job View Application details 1

    Spark Job View Application details 2

Console do Spark

Você pode executar o Console Local do Spark (Scala) ou o Console de Sessão Interativa do Spark Livy (Scala).

Console local do Spark (Scala)

Verifique se você satisfez o pré-requisito do WINUTILS.EXE.

  1. Na barra de menus, navegue até Executar>Editar Configurações... .

  2. Na janela Configurações de Execução/Depuração, no painel esquerdo, navegue até Apache Spark no Synapse>[Spark no Synapse] myApp.

  3. Na janela principal, selecione a guia Executar Localmente.

  4. Forneça os seguintes valores e, em seguida, selecione OK:

    Propriedade Valor
    Variáveis de ambiente Verifique se o valor de HADOOP_HOME está correto.
    Localização de WINUTILS.exe Verifique se o caminho está correto.

    Local Console Set Configuration

  5. De Projeto, navegue até myApp>src>main>scala>myApp.

  6. Na barra de menus, navegue até Ferramentas>Console do Spark>Executar Console Local do Spark (Scala) .

  7. Em seguida, duas caixas de diálogo poderão ser exibidas para perguntar se você deseja corrigir automaticamente as dependências. Em caso afirmativo, selecione Autocorreção.

    IntelliJ IDEA Spark Auto Fix dialog1

    IntelliJ IDEA Spark Auto Fix dialog2

  8. O console deve ser semelhante à imagem abaixo. Na janela do console, digite sc.appName e pressione ENTER. O resultado será exibido. Você pode interromper o console local selecionando o botão vermelho.

    IntelliJ IDEA local console result

Console de sessão interativa do Spark Livy (Scala)

Ele é compatível apenas com o IntelliJ 2018.2 e 2018.3.

  1. Na barra de menus, navegue até Executar>Editar Configurações... .

  2. Na janela Configurações de Execução/Depuração, no painel esquerdo, navegue até Apache Spark no Synapse>[Spark no Synapse] myApp.

  3. Na janela principal, selecione a guia Executar Remotamente no Cluster.

  4. Forneça os seguintes valores e, em seguida, selecione OK:

    Propriedade Valor
    Nome da classe principal Selecione o nome de classe Main.
    Pools do Spark Selecione os pools do Spark nos quais você deseja executar o aplicativo.

    Interactive Console Set Configuration

  5. De Projeto, navegue até myApp>src>main>scala>myApp.

  6. Na barra de menus, navegue até Ferramentas>Console do Spark>Executar Console de Sessão Interativa do Spark Livy (Scala) .

  7. O console deve ser semelhante à imagem abaixo. Na janela do console, digite sc.appName e pressione ENTER. O resultado será exibido. Você pode interromper o console local selecionando o botão vermelho.

    IntelliJ IDEA Interactive Console Result

Enviar seleção ao console do Spark

Talvez você queira ver o resultado do script enviando código ao console local ou ao Console de Sessão Interativa do Livy (Scala). Para fazer isso, você pode realçar o código no arquivo do Scala e clicar com o botão direito do mouse em Enviar Seleção ao Console do Spark. O código selecionado será enviado para o console e será executado. O resultado será exibido após o código no console. O console verificará os erros existentes.

Send Selection to Spark console

Próximas etapas