Usar Ferramentas Spark e Hive para Visual Studio Code

Saiba como usar as Ferramentas Apache Spark e Hive para Visual Studio Code. Use as ferramentas para criar e enviar trabalho em lotes do Apache Hive, consultas interativas do Hive e scripts PySpark para o Apache Spark. Primeiro, descreveremos como instalar as Ferramentas Spark e Hive no Visual Studio Code. Em seguida, vamos examinar passo a passo como enviar trabalhos para as Ferramentas Spark e Hive.

As Ferramentas Spark e Hive podem ser instaladas em plataformas compatíveis com o Visual Studio Code. Observe os pré-requisitos a seguir para diferentes plataformas.

Pré-requisitos

Os itens a seguir são necessários para concluir as etapas neste artigo:

Instalar Ferramentas do Spark & Hive

Após cumprir os pré-requisitos, você poderá instalar as Ferramentas Spark e Hive para Visual Studio Code executando as seguintes etapas:

  1. Abra o Visual Studio Code.

  2. Na barra de menus, navegue até Exibir>Extensões.

  3. Na caixa de pesquisa, insira Spark & Hive.

  4. Selecione Ferramentas Spark e Hive nos resultados da pesquisa e escolha Instalar:

    Spark & Hive for Visual Studio Code Python install.

  5. Selecione Recarregar quando necessário.

Abrir uma pasta de trabalho

Para abrir uma pasta de trabalho e criar um arquivo no Visual Studio Code, execute as seguintes etapas:

  1. Na barra de menus, navegue até Arquivo>Abrir Pasta...>C:\HD\HDexamplee, em seguida, selecione o botão Selecionar Pasta. A pasta aparece no modo de exibição do Explorer à esquerda.

  2. Na exibição do Explorer, selecione a pasta HDexample e depois o ícone Novo Arquivo ao lado da pasta de trabalho:

    visual studio code new file icon.

  3. Nomeie o novo arquivo com a extensão de arquivo .hql (consultas de Hive) ou .py (script Spark). Este exemplo usa HelloWorld.hql.

Configurar o ambiente do Azure

Para um usuário de nuvem nacional, siga estas etapas para definir o ambiente do Azure primeiro e, em seguida, use o comando Azure: entrar para entrar no Azure:

  1. Navegue até Arquivo>Preferências>Configurações.

  2. Pesquise na seguinte cadeia de caracteres: Azure: Cloud.

  3. Selecione a nuvem nacional na lista:

    Set default login entry configuration.

Conectar-se a uma conta do Azure

Antes que você possa enviar scripts para seus clusters de Visual Studio Code, o usuário pode entrar na assinatura do Azure ou vincular um cluster do HDInsight. Use o nome de usuário/senha do Ambari ou a credencial de ingresso no domínio para o cluster ESP para se conectar ao cluster do HDInsight. Siga estas etapas para se conectar ao Azure:

  1. Na barra de menus, navegue para Exibir>Paleta de Comandos... e insira Azure: Entrar:

    Spark & Hive Tools for Visual Studio Code login.

  2. Siga as instruções de entrada para entrar no Azure. Depois que você estiver conectado, o nome da conta do Azure será mostrado na barra de status, na parte inferior da janela do Visual Studio Code.

É possível vincular um cluster normal usando um nome de usuário gerenciado do Apache Ambari ou vincular um cluster Hadoop seguro do pacote Enterprise Security usando um nome de usuário de domínio (como: user1@contoso.com).

  1. Na barra de menus, navegue até Exibir>Paleta de Comandos... e insira Spark / Hive: Vincular um Cluster.

    Command Palette link cluster command.

  2. Selecione o tipo de cluster vinculado Azure HDInsight.

  3. Insira a URL do cluster do HDInsight.

  4. Insira seu nome de usuário do Ambari; o padrão é admin.

  5. Insira sua senha do Ambari.

  6. Selecione o tipo de cluster.

  7. Defina o nome de exibição do cluster (opcional).

  8. Examine a exibição SAÍDA para verificação.

    Observação

    O nome de usuário e a senha vinculados serão usados se o cluster foi registrado na assinatura do Azure e vinculou um cluster.

  1. Na barra de menus, navegue até Exibir>Paleta de Comandos... e insira Spark / Hive: Vincular um Cluster.

  2. Selecione o tipo de cluster vinculado Ponto de Extremidade Genérico do Livy.

  3. Digite o ponto de extremidade genérico do Livy. Por exemplo: http://10.172.41.42:18080.

  4. Selecione o tipo de autorização, Básico ou Nenhum. Se selecionar Básico:

    1. Insira seu nome de usuário do Ambari; o padrão é admin.

    2. Insira sua senha do Ambari.

  5. Examine a exibição SAÍDA para verificação.

Listar clusters

  1. Na barra de menus, navegue até Exibir>Paleta de Comandos... e insira Spark / Hive: Vincular um Cluster.

  2. Selecione a assinatura que você quer usar.

  3. Examine a exibição SAÍDA. Essa exibição mostra o cluster (ou clusters) vinculado e todos os clusters em sua assinatura do Azure:

    Set a default cluster configuration.

Defina o cluster padrão

  1. Reabra a pasta HDexample discutida anteriormente, se estiver fechada.

  2. Selecione o arquivo HelloWorld.hql, criado anteriormente. Ele será aberto no editor de scripts.

  3. Clique com o botão direito do mouse no editor de scripts e, em seguida, selecione Spark / Hive: Definir Cluster Padrão.

  4. Conecte-se à sua conta do Azure ou vincule um cluster, se ainda não tiver feito isso.

  5. Selecione um cluster como o cluster padrão para o arquivo de script atual. As ferramentas atualizam automaticamente o arquivo de configuração .VSCode\settings.json:

    Set default cluster configuration.

Enviar consultas interativas do Hive, scripts em lotes do Hive

Com as Ferramentas Spark e Hive para Visual Studio Code, você pode enviar consultas interativas e scripts em lotes do Hive a clusters.

  1. Reabra a pasta HDexample discutida anteriormente, se estiver fechada.

  2. Selecione o arquivo HelloWorld.hql, criado anteriormente. Ele será aberto no editor de scripts.

  3. Copie e cole o código a seguir no arquivo do Hive e depois salve-o:

    SELECT * FROM hivesampletable;
    
  4. Conecte-se à sua conta do Azure ou vincule um cluster, se ainda não tiver feito isso.

  5. Clique com o botão direito do mouse no editor de scripts e selecione Hive: Interativo para enviar a consulta ou use o atalho de teclado Ctrl+Alt+I. Selecione Hive: lote para enviar o script ou use o atalho de teclado Ctrl+Alt+H.

  6. Selecione o cluster se não tiver especificado um cluster padrão. As ferramentas também permitem que você envie um bloco de código em vez do arquivo de script inteiro usando o menu de contexto. Após alguns instantes, os resultados da consulta aparecem em uma nova guia:

    Interactive Apache Hive query result.

    • Painel RESULTADOS: você pode salvar o resultado inteiro como um arquivo CSV, JSON ou Excel para o caminho local ou apenas selecionar várias linhas.

    • Painel MENSAGENS: ao selecionar o número de Linha, ele salta para a primeira linha do script em execução.

Enviar consultas interativas de PySpark

Pré-requisito para o Pyspark interativo

Observe que a versão da Extensão do Jupyter (ms-jupyter): v2022.1.1001614873 e a versão da Extensão do Python (ms-python): v2021.12.1559732655, Python 3.6.x e 3.7.x são apenas para consultas interativas do PySpark para HDInsight.

Os usuários podem executar o PySpark interativo das seguintes maneiras.

Usando o comando do Synapse PySpark interativo no arquivo PY

Usando o comando do PySpark interativo para enviar as consultas, siga estas etapas:

  1. Reabra a pasta HDexample discutida anteriormente, se estiver fechada.

  2. Crie um arquivo HelloWorld.py seguindo as etapas anteriores.

  3. Copie e cole o seguinte código no arquivo de script:

    from operator import add
    from pyspark.sql import SparkSession 
    spark = SparkSession.builder \ 
          .appName('hdisample') \ 
          .getOrCreate() 
    lines = spark.read.text("/HdiSamples/HdiSamples/FoodInspectionData/README").rdd.map(lambda r: r[0])
    counters = lines.flatMap(lambda x: x.split(' ')) \
                 .map(lambda x: (x, 1)) \
                 .reduceByKey(add)
    
    coll = counters.collect()
    sortedCollection = sorted(coll, key = lambda r: r[1], reverse = True)
    
    for i in range(0, 5):
         print(sortedCollection[i])
    
  4. O prompt para instalar o kernel do PySpark/Synapse Pyspark é exibido no canto inferior direito da janela. Você pode clicar no botão Instalar para prosseguir com as instalações do PySpark/Synapse Pyspark; ou clicar no botão Ignorar para ignorar esta etapa.

    Screenshot shows an option to skip the PySpark installation.

  5. Se precisar instalá-lo mais tarde, você poderá navegar até Arquivo>Preferência>Configurações e desmarcar HDInsight: habilitar a opção de ignorar instalação do Pyspark nas configurações.

    Screenshot shows the option to Enable Skip Pyspark Installation.

  6. Se a instalação for bem-sucedida na etapa 4, a caixa de mensagem "PySpark instalado com sucesso" será exibida no canto inferior direito da janela. Clique no botão Recarregar para recarregar a janela.

    pyspark installed successfully.

  7. Na barra de menus, navegue até Exibir>Paleta de Comandos... ou use o atalho de teclado Shift+Ctrl+P e insira Python: selecionar interpretador para iniciar o Servidor Jupyter.

    select interpreter to start jupyter server.

  8. Selecione a opção Python abaixo.

    choose the below option.

  9. Na barra de menus, navegue até Exibir>Paleta de Comandos... ou use o atalho de teclado Shift+Ctrl+P e insira Desenvolvedor: Reload Window.

    reload window.

  10. Conecte-se à sua conta do Azure ou vincule um cluster, se ainda não tiver feito isso.

  11. Selecione todo o código, clique com o botão direito do mouse no editor de scripts e selecione Spark: PySpark Interativo / Synapse: Pyspark Interativo para enviar a consulta.

    pyspark interactive context menu.

  12. Selecione o cluster se não tiver especificado um cluster padrão. Após alguns instantes, os resultados do Python Interativo aparecem em uma nova guia. Clique em PySpark para mudar o kernel para PySpark / Synapse Pyspark, e o código será executado com sucesso. Se você quiser mudar para o kernel do Synapse Pyspark, recomenda-se desabilitar as configurações automáticas no portal do Azure. Caso contrário, pode levar muito tempo para ativar o cluster e definir o kernel do Azure Synapse para o primeiro uso. As ferramentas também permitem que você envie um bloco de código em vez do arquivo de script inteiro usando o menu de contexto:

    pyspark interactive python interactive window.

  13. Insira "%%info" e, em seguida, pressione Shift+Enter para exibir informações do trabalho (opcional):

    pyspark interactive view job information.

A ferramenta também é compatível com a consulta Spark SQL:

pyspark interactive view result.

Executar consulta interativa no arquivo PY usando um comentário #%%

  1. Adicione #%% antes do código Py para obter experiência com o notebook.

    add #%%.

  2. Clique em Executar Célula. Após alguns instantes, os resultados do Python Interativo aparecem em uma nova guia. Clique em PySpark para mudar o kernel para PySpark/Synapse PySpark, depois clique em Executar Célula novamente e o código será executado com sucesso.

    run cell results.

Aproveite a compatibilidade do IPYNB com a extensão do Python

  1. Você pode criar um Jupyter Notebook por comando na Paleta de Comandos ou criando um arquivo .ipynb em seu workspace. Para obter mais informações, confira Trabalhando com Jupyter Notebooks no Visual Studio Code

  2. Clique no botão Executar Célula, siga os prompts para Definir o Pool do Spark padrão (é altamente recomendável definir o cluster/pool padrão toda vez antes de abrir um notebook) e Recarregue a janela.

    set the default spark pool and reload.

  3. Clique em PySpark para mudar o kernel para Synapse Pyspark e depois clique em Executar Célula. Após um tempo, o resultado será exibido.

    run ipynb results.

Observação

Para o erro de instalação do Synapse PySpark, como sua dependência não será mais mantida por outra equipe, ela também não será mais mantida. Se você tentar usar o Synapse Pyspark interativo, mude para usar o Azure Synapse Analytics em vez disso. E é uma alteração de longo prazo.

Enviar trabalho em lotes PySpark

  1. Reabra a pasta HDexample discutida anteriormente, se estiver fechada.

  2. Crie um arquivo BatchFile.py seguindo as etapas anteriores.

  3. Copie e cole o seguinte código no arquivo de script:

    from __future__ import print_function
    import sys
    from operator import add
    from pyspark.sql import SparkSession
    if __name__ == "__main__":
        spark = SparkSession\
            .builder\
            .appName("PythonWordCount")\
            .getOrCreate()
    
        lines = spark.read.text('/HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv').rdd.map(lambda r: r[0])
        counts = lines.flatMap(lambda x: x.split(' '))\
                   .map(lambda x: (x, 1))\
                    .reduceByKey(add)
        output = counts.collect()
        for (word, count) in output:
            print("%s: %i" % (word, count))
        spark.stop()
    
  4. Conecte-se à sua conta do Azure ou vincule um cluster, se ainda não tiver feito isso.

  5. Clique com o botão direito do mouse no editor de scripts e selecione Spark: PySpark batchouSynapse: PySpark Batch*

  6. Selecione um Pool de cluster/spark para enviar o trabalho do PySpark para:

    Submit Python job result output.

Após você enviar um trabalho do Python, os logs de envio aparecem na janela de SAÍDA no Visual Studio Code. A URL da interface do usuário do Spark e a URL da interface do usuário do Yarn também são mostradas. Se você enviar o trabalho em lotes para um pool do Apache Spark, a URL da interface do usuário do histórico do Spark e a URL do aplicativo de trabalho do Spark também serão exibidas. Você pode abrir a URL em um navegador da Web para acompanhar o status do trabalho.

Integrar com o (HIB) Agente de Identidade do HDInsight

Conectar-se ao cluster do HDInsight ESP com o HIB (Agente de IDs)

Você pode seguir as etapas normais para entrar na assinatura do Azure para se conectar a seu cluster do HDInsight ESP com o HIB (Agente de IDs). Depois de entrar, você verá a lista de clusters no Azure Explorer. Para obter mais instruções, confira Conectar-se a seu cluster do HDInsight.

Executar um trabalho de Hive/PySpark em um cluster do HDInsight ESP com o HIB (Agente de IDs)

Para executar um trabalho do hive, você pode seguir as etapas normais para enviar o trabalho ao cluster do HDInsight ESP com o HIB (Agente de IDs). Consulte Enviar consultas de Hive interativas e scripts de lote do hive para obter mais instruções.

Para executar um trabalho do PySpark interativo, você pode seguir as etapas normais para enviar o trabalho ao cluster do HDInsight ESP com o HIB (Agente de IDs). Consulte Enviar consultas interativas de PySpark.

Para executar um trabalho em lote do PySpark, você pode seguir as etapas normais para enviar o trabalho ao cluster do HDInsight ESP com o HIB (Agente de IDs). Consulte Enviar o trabalho em lote do PySpark para obter mais instruções.

Configuração do Apache Livy

Há suporte para a configuração do Apache Livy. Você pode configurá-lo no arquivo .VSCode\settings.json na pasta do espaço de trabalho. Atualmente, a configuração do Livy dá suporte apenas ao script de Python. Para obter mais informações, veja o LEIAME do LIvy.

Como disparar a configuração do Livy

Método 1

  1. Na barra de menus, navegue até Arquivo>Preferências>Configurações.
  2. Na caixa Pesquisar configurações, insira Envio de trabalho do HDInsight: Livy conf.
  3. Selecione Editar em settings.json para o resultado da pesquisa relevante.

Método 2

Envie um arquivo, observe que a pasta .vscode é adicionada automaticamente à pasta de trabalho. Você pode encontrar a configuração de Livy clicando em .vscode\settings.json.

  • As configurações do projeto:

    HDInsight Apache Livy configuration.

    Observação

    Para as configurações de driverMemory e executorMemory, defina o valor e a unidade. Por exemplo: 1g ou 1024m.

  • Configurações do Livy com suporte:

    POST /batches

    Corpo da solicitação

    name descrição type
    file Arquivo que contém o aplicativo a ser executado Path (obrigatório)
    proxyUser Usuário a representar ao executar o trabalho String
    className Classe principal de Java/Spark do aplicativo String
    args Argumentos de linha de comando para o aplicativo Lista de cadeias de caracteres
    jars Jars a serem usados nesta sessão Lista de cadeias de caracteres
    pyFiles Arquivos Python a serem usados nesta sessão Lista de cadeias de caracteres
    files Arquivos a serem usados nesta sessão Lista de cadeias de caracteres
    driverMemory Quantidade de memória a ser usada para o processo do driver String
    driverCores Número de núcleos a serem usados para o processo do driver int
    executorMemory Quantidade de memória a ser usada pelo processo de executor String
    executorCores Número de núcleos a serem usados para cada executor int
    numExecutors Número de executores a serem iniciados para esta sessão int
    archives Arquivos a serem usados nesta sessão Lista de cadeias de caracteres
    fila Nome da fila de YARN a ser enviada String
    name O nome desta sessão String
    conf Propriedades de configuração do Spark Mapa de chave = valor

    Corpo da resposta O objeto de lote criado.

    name descrição type
    ID ID da sessão int
    appId A ID do aplicativo desta sessão String
    appInfo As informações detalhadas do aplicativo Mapa de chave = valor
    log Linhas de log Lista de cadeias de caracteres
    state O estado do lote String

    Observação

    A configuração Livy atribuída é exibida no painel de saída quando você envia o script.

Integrar ao Azure HDInsight pelo Explorer

Você pode visualizar a tabela do hive em seus clusters diretamente por meio do Azure HDInsight Explorer:

  1. Conecte-se à sua conta do Azure se ainda não tiver feito isso.

  2. Selecione o ícone do Azure na coluna mais à esquerda.

  3. No painel à esquerda, expanda AZURE HDINSIGHT. As assinaturas e os clusters disponíveis são listados.

  4. Expanda o cluster para exibir o esquema de banco de dados de metadados e tabela do Hive.

  5. Clique com o botão direito do mouse na tabela Hive. Por exemplo: hivesampletable. Selecione Visualização.

    Spark & Hive for Visual Studio Code preview hive table.

  6. A janela Visualizar resultados é aberta:

    Spark & Hive for Visual Studio Code preview results window.

  • Painel RESULTADOS

    É possível salvar o resultado inteiro como um arquivo CSV, JSON ou Excel para o caminho local ou apenas selecionar várias linhas.

  • Painel MENSAGENS

    1. Quando o número de linhas na tabela for maior que 100, você verá a seguinte mensagem: "As primeiras 100 linhas são exibidas para a tabela Hive".

    2. Quando o número de linhas na tabela for menor ou igual a 100, você verá a seguinte mensagem: "São exibidas 60 linhas para a tabela do hive".

    3. Quando não houver conteúdo na tabela, você verá a seguinte mensagem: "0 rows are displayed for Hive table."

      Observação

      No Linux, instale o xclip para habilitar os dados da tabela de cópia.

      Spark & Hive for Visual Studio code in Linux.

Recursos adicionais

O Spark e Hive para Visual Studio Code tem suporte para os seguintes recursos:

  • Preenchimento automático do IntelliSense. Sugestões pop up para palavras-chave, métodos, variáveis e outros elementos de programação. Os diferentes ícones representam diferentes tipos de objetos:

    Spark & Hive Tools for Visual Studio Code IntelliSense objects.

  • Marcador de erro do IntelliSense. O serviço de linguagem sublinha os erros de edição para o script do Hive.

  • Destaques da sintaxe. O serviço de linguagem usa cores diferentes para distinguir variáveis, palavras-chave, tipo de dados, funções e outros elementos de programação:

    Spark & Hive Tools for Visual Studio Code syntax highlights.

Função somente leitura

Os usuários que recebem a função somente de leitor para o cluster não podem enviar trabalhos para o cluster do HDInsight nem exibir o banco de dados do Hive. Contate o administrador de cluster para atualizar sua função para o Operador de cluster do HDInsight no portal do Azure. Se você tiver credenciais Ambari válidas, poderá vincular manualmente o cluster usando as diretrizes a seguir.

Procurar o cluster do HDInsight

Ao selecionar o Azure HDInsight Explorer para expandir um cluster do HDInsight, você será solicitado a vincular o cluster se tiver a função somente de leitor para o cluster. Use o método a seguir para vincular-se ao cluster usando suas credenciais do Ambari.

Enviar o trabalho para o cluster do HDInsight

Ao enviar o trabalho para um cluster do HDInsight, você será solicitado a vincular o cluster se estiver na função somente de leitor para o cluster. Use as etapas a seguir para vincular-se ao cluster usando as credenciais do Ambari.

  1. Insira um nome de usuário Ambari válido.

  2. Insira uma senha válida.

    Spark & Hive Tools for Visual Studio Code Username.

    Spark & Hive Tools for Visual Studio Code Password.

    Observação

    Você pode usar Spark / Hive: List Cluster para verificar o cluster vinculado:

    Spark & Hive Tools for Visual Studio Code Reader Linked.

Azure Data Lake Storage Gen2

Procurar uma conta do Data Lake Storage Gen2

Selecione o Azure HDInsight Explorer para expandir uma conta do Data Lake Storage Gen2. Você será solicitado a inserir a chave de acesso de armazenamento se sua conta do Azure não tiver acesso ao armazenamento Gen2. Depois que a chave de acesso for validada, a conta do Data Lake Storage Gen2 será expandida automaticamente.

Enviar trabalhos para um cluster do HDInsight com o Data Lake Storage Gen2

Envie um trabalho para um cluster do HDInsight usando Data Lake Storage Gen2. Você será solicitado a inserir a chave de acesso de armazenamento se sua conta do Azure não tiver acesso de gravação ao armazenamento Gen2. Depois que a chave de acesso for validada, o trabalho será enviado com êxito.

Spark & Hive Tools for Visual Studio Code AccessKey.

Observação

Use o portal do Azure para obter a chave de acesso da conta de armazenamento. Para obter mais informações, confira Gerenciar chaves de acesso da conta de armazenamento.

  1. Na barra de menus, navegue até Exibir>Paleta de Comandos e, em seguida, insira Spark / Hive: Desvincular um cluster.

  2. Selecione o cluster a ser desvinculado.

  3. Veja a exibição SAÍDA para verificação.

Sair

Na barra de menus, navegue para Exibir>Paleta de Comandos e, em seguida, insira Azure: Sair.

Problemas conhecidos

Erro de instalação do Synapse PySpark.

Para o erro de instalação do Synapse PySpark, como sua dependência não será mais mantida por outra equipe, ela não será mais mantida. Se você tentar usar o Synapse Pyspark interativo, use o Azure Synapse Analytics em vez disso. E é uma alteração de longo prazo.

synapse pyspark installation error.

Próximas etapas

Para ver um vídeo que demonstra o uso do Spark e Hive para Visual Studio Code, confira Spark e Hive para Visual Studio Code.