Usar ferramentas Spark & Hive para código do Visual Studio
Saiba como usar o Apache Spark & Hive Tools for Visual Studio Code. Use as ferramentas para criar e enviar trabalhos em lote do Apache Hive, consultas interativas do Hive e scripts PySpark para o Apache Spark. Primeiro, descreveremos como instalar o Spark & Hive Tools no Visual Studio Code. Em seguida, explicaremos como enviar trabalhos para o Spark & Hive Tools.
O Spark & Hive Tools pode ser instalado em plataformas suportadas pelo Visual Studio Code. Observe os seguintes pré-requisitos para diferentes plataformas.
Pré-requisitos
Os seguintes itens são necessários para concluir as etapas neste artigo:
- Um cluster do Azure HDInsight. Para criar um cluster, consulte Introdução ao HDInsight. Ou use um cluster Spark e Hive que suporte um ponto de extremidade Apache Livy.
- Visual Studio Code.
- Mono. Mono é necessário apenas para Linux e macOS.
- Um ambiente interativo PySpark para Visual Studio Code.
- Um diretório local. Este artigo usa
C:\HD\HDexample
o .
Instalar o Spark & Hive Tools
Depois de atender aos pré-requisitos, você pode instalar o Spark & Hive Tools for Visual Studio Code seguindo estas etapas:
Abra o Visual Studio Code.
Na barra de menus, navegue até Exibir>Extensões.
Na caixa de pesquisa, digite Spark & Hive.
Selecione Spark & Hive Tools nos resultados da pesquisa e, em seguida, selecione Instalar:
Selecione Recarregar quando necessário.
Abrir uma pasta de trabalho
Para abrir uma pasta de trabalho e criar um ficheiro no Visual Studio Code, siga estes passos:
Na barra de menus, navegue até Pasta>Abrir Arquivo...
C:\HD\HDexample
>e, em seguida, selecione o botão Selecionar Pasta. A pasta aparece no modo de exibição Explorer à esquerda.No modo de exibição Explorer , selecione a
HDexample
pasta e, em seguida, selecione o ícone Novo arquivo ao lado da pasta de trabalho:Nomeie o novo arquivo usando a
.hql
extensão de arquivo (consultas Hive) ou (.py
script Spark). Este exemplo usa HelloWorld.hql.
Definir 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:
Navegue até Configurações de preferências>de arquivo.>
Pesquisar na seguinte cadeia de caracteres: Azure: Cloud.
Selecione a nuvem nacional na lista:
Ligar a uma conta do Azure
Antes de enviar scripts para seus clusters a partir do Visual Studio Code, o usuário pode entrar na assinatura do Azure ou vincular um cluster HDInsight. Use o nome de usuário/senha ou a credencial de ingresso no domínio do Ambari para o cluster ESP para se conectar ao cluster HDInsight. Siga estas etapas para se conectar ao Azure:
Na barra de menus, navegue até Exibir>Paleta de Comandos..., e digite Azure: Entrar:
Siga as instruções de início de sessão para iniciar sessão no Azure. Depois que você estiver conectado, o nome da sua conta do Azure será exibido na barra de status na parte inferior da janela Código do Visual Studio.
Vincular um cluster
Link: Azure HDInsight
Você pode vincular um cluster normal usando um nome de usuário gerenciado pelo Apache Ambari ou pode vincular um cluster Hadoop seguro do Enterprise Security Pack usando um nome de usuário de domínio (como: user1@contoso.com
).
Na barra de menus, navegue até Exibir>paleta de comandos..., e digite Faísca / Colmeia: Vincular um cluster.
Selecione o tipo de cluster vinculado Azure HDInsight.
Insira a URL do cluster HDInsight.
Digite seu nome de usuário Ambari; O padrão é admin.
Digite sua senha Ambari.
Selecione o tipo de cluster.
Defina o nome para exibição do cluster (opcional).
Revise o modo de exibição OUTPUT para verificação.
Nota
O nome de usuário e a senha vinculados serão usados se o cluster tiver conectado à assinatura do Azure e vinculado a um cluster.
Link: Ponto final Livy Genérico
Na barra de menus, navegue até Exibir>paleta de comandos..., e digite Faísca / Colmeia: Vincular um cluster.
Selecione o tipo de cluster vinculado Generic Livy Endpoint.
Insira o ponto de extremidade Livy genérico. Por exemplo: http://10.172.41.42:18080.
Selecione o tipo de autorização Basic ou None. Se você selecionar Básico:
Digite seu nome de usuário Ambari; O padrão é admin.
Digite sua senha Ambari.
Revise o modo de exibição OUTPUT para verificação.
Listar clusters
Na barra de menus, navegue até View>Command Palette..., e digite Spark / Hive: List Cluster.
Selecione a assinatura desejada.
Analise a visualização SAÍDA . Esta vista mostra o seu cluster (ou clusters) ligado e todos os clusters na sua subscrição do Azure:
Definir o cluster padrão
Reabra a pasta que foi discutida
HDexample
anteriormente, se fechada.Selecione o arquivo HelloWorld.hql que foi criado anteriormente. Ele é aberto no editor de scripts.
Clique com o botão direito do mouse no editor de scripts e selecione Faísca / Colmeia: Definir cluster padrão.
Conecte-se à sua conta do Azure ou vincule um cluster se ainda não tiver feito isso.
Selecione um cluster como o cluster padrão para o arquivo de script atual. As ferramentas atualizam automaticamente o . VSCode\settings.json arquivo de configuração:
Enviar consultas interativas do Hive e scripts em lote do Hive
Com o Spark & Hive Tools for Visual Studio Code, você pode enviar consultas interativas do Hive e scripts em lote do Hive para seus clusters.
Reabra a pasta que foi discutida
HDexample
anteriormente, se fechada.Selecione o arquivo HelloWorld.hql que foi criado anteriormente. Ele é aberto no editor de scripts.
Copie e cole o seguinte código no arquivo do Hive e salve-o:
SELECT * FROM hivesampletable;
Conecte-se à sua conta do Azure ou vincule um cluster se ainda não tiver feito isso.
Clique com o botão direito do mouse no editor de scripts e selecione Hive: Interactive para enviar a consulta ou use o atalho de teclado Ctrl+Alt+I. Selecione Hive: Batch para enviar o script ou use o atalho de teclado Ctrl+Alt+H.
Se você não tiver especificado um cluster padrão, selecione um cluster. As ferramentas também permitem enviar um bloco de código em vez de todo o arquivo de script usando o menu de contexto. Após alguns momentos, os resultados da consulta aparecem em uma nova guia:
Painel RESULTADOS : Você pode salvar todo o resultado como um arquivo CSV, JSON ou Excel em um caminho local ou apenas selecionar várias linhas.
Painel MENSAGENS : Quando você seleciona um número de linha , ele salta para a primeira linha do script em execução.
Enviar consultas interativas do PySpark
Pré-requisito para o Pyspark interativo
Observe aqui que a versão do Jupyter Extension (ms-jupyter): v2022.1.1001614873 e a versão Python Extension (ms-python): v2021.12.1559732655, Python 3.6.x e 3.7.x são necessárias para consultas interativas do PySpark do HDInsight.
Os usuários podem executar o PySpark interativo das seguintes maneiras.
Usando o comando interativo PySpark no arquivo PY
Usando o comando interativo PySpark para enviar as consultas, siga estas etapas:
Reabra a pasta que foi discutida
HDexample
anteriormente, se fechada.Crie um novo arquivo HelloWorld.py , seguindo as etapas anteriores .
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])
O prompt para instalar o kernel PySpark/Synapse Pyspark é exibido no canto inferior direito da janela. Você pode clicar no botão Instalar para prosseguir para as instalações do PySpark/Synapse Pyspark, ou clicar no botão Ignorar para pular esta etapa.
Se precisar de instalá-lo mais tarde, pode navegar até Definições de Preferências>de Ficheiros> e, em seguida, desmarcar HDInsight: Ativar Instalação Skip Pyspark nas definições.
Se a instalação for bem-sucedida na etapa 4, a caixa de mensagem "PySpark instalado com êxito" é exibida no canto inferior direito da janela. Clique no botão Recarregar para recarregar a janela.
Na barra de menus, navegue até View>Command Palette... ou use o atalho de teclado Shift + Ctrl + P e digite Python: Select Interpreter para iniciar o Jupyter Server.
Selecione a opção Python abaixo.
Na barra de menus, navegue até View>Command Palette... ou use o atalho de teclado Shift + Ctrl + P e digite Developer: Reload Window.
Conecte-se à sua conta do Azure ou vincule um cluster se ainda não tiver feito isso.
Selecione todo o código, clique com o botão direito do mouse no editor de scripts e selecione Spark: PySpark Interactive / Synapse: Pyspark Interactive para enviar a consulta.
Selecione o cluster, se você não tiver especificado um cluster padrão. Depois de alguns momentos, os resultados do Python Interactive 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 alternar para o kernel Synapse Pyspark, a desativação das configurações automáticas no portal do Azure é incentivada. Caso contrário, pode levar muito tempo para acordar o cluster e definir o kernel de sinapse para o uso pela primeira vez. Se as ferramentas também permitirem que você envie um bloco de código em vez de todo o arquivo de script usando o menu de contexto:
Digite %%info e pressione Shift+Enter para exibir as informações do trabalho (opcional):
A ferramenta também suporta a consulta Spark SQL :
Execute uma consulta interativa no arquivo PY usando um comentário #%%
Adicione #%% antes do código Py para obter experiência no bloco de anotações.
Clique em Executar célula. Após alguns momentos, os resultados do Python Interactive aparecem em uma nova guia. Clique em PySpark para mudar o kernel para PySpark/Synapse PySpark, em seguida, clique em Run Cell novamente, e o código será executado com sucesso.
Aproveite o suporte IPYNB da extensão Python
Você pode criar um Jupyter Notebook por comando a partir da Paleta de Comandos ou criando um novo
.ipynb
arquivo em seu espaço de trabalho. Para obter mais informações, consulte Trabalhando com blocos de anotações Jupyter no Visual Studio CodeClique no botão Executar célula , siga as instruções para definir o pool de faíscas padrão (sugerimos que você defina cluster/pool padrão toda vez antes de abrir um bloco de anotações) e, em seguida, Recarregar janela.
Clique em PySpark para mudar o kernel para PySpark / Synapse Pyspark e, em seguida, clique em Run Cell, depois de um tempo, o resultado será exibido.
Nota
Para o erro de instalação do Synapse PySpark, uma vez que sua dependência não será mais mantida por outra equipe, isso não será mais mantido também. Se você tentar usar o Synapse Pyspark interativo, alterne para usar o Azure Synapse Analytics em vez disso. E é uma mudança a longo prazo.
Enviar trabalho em lote do PySpark
Reabra a
HDexample
pasta que você discutiu anteriormente, se fechada.Crie um novo arquivo BatchFile.py seguindo as etapas anteriores .
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()
Conecte-se à sua conta do Azure ou vincule um cluster se ainda não tiver feito isso.
Clique com o botão direito do mouse no editor de scripts e selecione Spark: PySpark Batch ou Synapse: PySpark Batch*.
Selecione um cluster/pool de faíscas para enviar seu trabalho do PySpark para:
Depois de enviar um trabalho Python, os logs de envio aparecem na janela OUTPUT 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 lote para um pool do Apache Spark, a URL da interface do usuário do histórico do Spark e a URL da interface do usuário do aplicativo Spark Job também serão mostradas. Você pode abrir a URL em um navegador da Web para acompanhar o status do trabalho.
Integração com o HDInsight Identity Broker (HIB)
Conectar-se ao cluster ESP do HDInsight com o ID Broker (HIB)
Você pode seguir as etapas normais para entrar na assinatura do Azure para se conectar ao cluster ESP do HDInsight com o ID Broker (HIB). Após entrar, você verá a lista de clusters no Azure Explorer. Para obter mais instruções, consulte Conectar-se ao cluster HDInsight.
Executar um trabalho Hive/PySpark em um cluster ESP do HDInsight com ID Broker (HIB)
Para executar um trabalho de hive, você pode seguir as etapas normais para enviar o trabalho para o cluster ESP do HDInsight com o ID Broker (HIB). Consulte Enviar consultas interativas do Hive e scripts em lote do Hive para obter mais instruções.
Para executar um trabalho interativo do PySpark, você pode seguir as etapas normais para enviar o trabalho para o cluster ESP do HDInsight com o ID Broker (HIB). Consulte Enviar consultas interativas do PySpark.
Para executar um trabalho em lote do PySpark, você pode seguir as etapas normais para enviar o trabalho para o cluster ESP do HDInsight com ID Broker (HIB). Consulte Enviar trabalho em lote do PySpark para obter mais instruções.
Configuração do Apache Livy
A configuração do Apache Livy é suportada. Você pode configurá-lo no . VSCode\settings.json na pasta de espaço de trabalho. Atualmente, a configuração do Livy suporta apenas script Python. Para obter mais informações, consulte Livy README.
Como acionar a configuração do Livy
Método 1
- Na barra de menus, navegue até Configurações de preferências>de arquivo>.
- Na caixa Configurações de pesquisa, digite Envio de trabalho do HDInsight: Livy Conf.
- Selecione Editar no settings.json para obter o resultado da pesquisa relevante.
Método 2
Envie um arquivo e observe que a pasta é adicionada .vscode
automaticamente à pasta de trabalho. Você pode ver a configuração do Livy selecionando .vscode\settings.json.
As configurações do projeto:
Nota
Para as configurações driverMemory e executorMemory , defina o valor e a unidade. Por exemplo: 1g ou 1024m.
Configurações Livy suportadas:
POST /lotes
Corpo do pedido
nome descrição tipo ficheiro Arquivo contendo o aplicativo a ser executado Caminho (obrigatório) proxyUser Usuário a ser representado ao executar o trabalho String className Classe principal do aplicativo Java/Spark String args Argumentos de linha de comando para o aplicativo Lista de cadeias de caracteres frascos Frascos para serem usados nesta sessão Lista de cadeias de caracteres Arquivos py Arquivos Python a serem usados nesta sessão Lista de cadeias de caracteres ficheiros Ficheiros a utilizar nesta sessão Lista de cadeias de caracteres driverMemória 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 de driver Int executorMemória Quantidade de memória a ser usada por processo de execução String executorCores Número de núcleos a serem usados para cada executor Int numExecutores Número de executores a serem iniciados para esta sessão Int Arquivos Arquivos a utilizar nesta sessão Lista de cadeias de caracteres queue Nome da fila YARN a ser enviada String nome Nome desta sessão String conf Propriedades de configuração do Spark Mapa da chave=val Corpo da resposta O objeto Batch criado.
nome descrição tipo ID ID da Sessão Int appId ID do aplicativo desta sessão String appInfo Informações detalhadas sobre a aplicação Mapa da chave=val registo Linhas de log Lista de cadeias de caracteres state Estado do lote String Nota
A configuração Livy atribuída é exibida no painel de saída quando você envia o script.
Integração com o Azure HDInsight a partir do Explorer
Você pode visualizar a Tabela do Hive em seus clusters diretamente por meio do explorador do Azure HDInsight :
Conecte-se à sua conta do Azure se ainda não tiver feito isso.
Selecione o ícone do Azure na coluna mais à esquerda.
No painel esquerdo, expanda AZURE: HDINSIGHT. As assinaturas e clusters disponíveis são listados.
Expanda o cluster para exibir o banco de dados de metadados do Hive e o esquema de tabela.
Clique com o botão direito do rato na tabela Hive. Por exemplo: hivesampletable. Selecione Pré-visualizar.
A janela Visualizar resultados abre:
Painel RESULTADOS
Você pode salvar todo o resultado como um arquivo CSV, JSON ou Excel em um caminho local ou apenas selecionar várias linhas.
Painel MENSAGENS
Quando o número de linhas na tabela é maior que 100, você vê a seguinte mensagem: "As primeiras 100 linhas são exibidas para a tabela Hive."
Quando o número de linhas na tabela é menor ou igual a 100, você vê a seguinte mensagem: "60 linhas são exibidas para a tabela Hive."
Quando não há conteúdo na tabela, você vê a seguinte mensagem: "
0 rows are displayed for Hive table.
"Nota
No Linux, instale o xclip para habilitar os dados da tabela de cópia.
Características adicionais
O Spark & Hive for Visual Studio Code também oferece suporte aos seguintes recursos:
Preenchimento automático do IntelliSense. Sugestões aparecem para palavras-chave, métodos, variáveis e outros elementos de programação. Ícones diferentes representam diferentes tipos de objetos:
Marcador de erro IntelliSense. O serviço de linguagem sublinha erros de edição no script do Hive.
Destaques de sintaxe. O serviço de linguagem usa cores diferentes para diferenciar variáveis, palavras-chave, tipo de dados, funções e outros elementos de programação:
Função somente de leitor
Os usuários aos quais é atribuída a função somente leitor para o cluster não podem enviar trabalhos para o cluster HDInsight, nem exibir o banco de dados do Hive. Entre em contato com o administrador do cluster para atualizar sua função para o Operador de Cluster HDInsight no portal do Azure. Se você tiver credenciais Ambari válidas, poderá vincular manualmente o cluster usando as diretrizes a seguir.
Procurar no cluster HDInsight
Ao selecionar o explorador do Azure HDInsight para expandir um cluster HDInsight, você será solicitado a vincular o cluster se tiver a função somente leitor para o cluster. Use o método a seguir para vincular ao cluster usando suas credenciais Ambari.
Enviar o trabalho para o cluster HDInsight
Ao enviar o trabalho para um cluster HDInsight, você será solicitado a vincular o cluster se estiver na função somente leitor para o cluster. Use as etapas a seguir para vincular ao cluster usando credenciais do Ambari.
Ligação ao cluster
Insira um nome de usuário Ambari válido.
Introduza uma palavra-passe válida.
Nota
Você pode usar
Spark / Hive: List Cluster
para verificar o cluster vinculado:
Azure Data Lake Storage Gen2
Procurar uma conta do Data Lake Storage Gen2
Selecione o explorador do Azure HDInsight 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 HDInsight com o Data Lake Storage Gen2
Envie um trabalho para um cluster HDInsight usando o 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 sucesso.
Nota
Você pode obter a chave de acesso para a conta de armazenamento no portal do Azure. Para obter mais informações, consulte Gerenciar chaves de acesso da conta de armazenamento.
Desvincular cluster
Na barra de menus, vá para Exibir>paleta de comandos e digite Faísca / Colmeia: Desvincular um cluster.
Selecione um cluster para desvincular.
Consulte a visualização OUTPUT para verificação.
Terminar sessão
Na barra de menus, vá para Exibir>Paleta de Comandos e digite Azure: Sair.
Problemas Conhecidos
Erro de instalação do Synapse PySpark.
Para erro de instalação do Synapse PySpark, uma vez que 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 mudança a longo prazo.
Próximos passos
Para obter um vídeo que demonstra o uso do Spark & Hive para Visual Studio Code, consulte Spark & Hive para Visual Studio Code.