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:
- Um cluster Azure HDInsight. Para criar um cluster, consulte Introdução ao HDInsight. Ou use um cluster Spark e Hive que dê suporte a um ponto de extremidade Apache Livy.
- Visual Studio Code.
- Mono. O Mono é necessário apenas para Linux e macOS.
- Um ambiente do PySpark interativo para Visual Studio Code.
- Um diretório Local. Este artigo usa
C:\HD\HDexample
.
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:
Abra o Visual Studio Code.
Na barra de menus, navegue até Exibir>Extensões.
Na caixa de pesquisa, insira Spark & Hive.
Selecione Ferramentas Spark e Hive nos resultados da pesquisa e escolha Instalar:
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:
Na barra de menus, navegue até Arquivo>Abrir Pasta...>
C:\HD\HDexample
e, em seguida, selecione o botão Selecionar Pasta. A pasta aparece no modo de exibição do Explorer à esquerda.Na exibição do Explorer, selecione a pasta
HDexample
e depois o ícone Novo Arquivo ao lado da pasta de trabalho: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:
Navegue até Arquivo>Preferências>Configurações.
Pesquise na seguinte cadeia de caracteres: Azure: Cloud.
Selecione a nuvem nacional na lista:
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:
Na barra de menus, navegue para Exibir>Paleta de Comandos... e insira Azure: Entrar:
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.
Vincular um cluster
Link: Azure HDInsight
É 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
).
Na barra de menus, navegue até Exibir>Paleta de Comandos... e insira Spark / Hive: Vincular um Cluster.
Selecione o tipo de cluster vinculado Azure HDInsight.
Insira a URL do cluster do HDInsight.
Insira seu nome de usuário do Ambari; o padrão é admin.
Insira sua senha do Ambari.
Selecione o tipo de cluster.
Defina o nome de exibição do cluster (opcional).
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.
Link: Ponto de extremidade genérico do Livy
Na barra de menus, navegue até Exibir>Paleta de Comandos... e insira Spark / Hive: Vincular um Cluster.
Selecione o tipo de cluster vinculado Ponto de Extremidade Genérico do Livy.
Digite o ponto de extremidade genérico do Livy. Por exemplo: http://10.172.41.42:18080.
Selecione o tipo de autorização, Básico ou Nenhum. Se selecionar Básico:
Insira seu nome de usuário do Ambari; o padrão é admin.
Insira sua senha do Ambari.
Examine a exibição SAÍDA para verificação.
Listar clusters
Na barra de menus, navegue até Exibir>Paleta de Comandos... e insira Spark / Hive: Vincular um Cluster.
Selecione a assinatura que você quer usar.
Examine a exibição SAÍDA. Essa exibição mostra o cluster (ou clusters) vinculado e todos os clusters em sua assinatura do Azure:
Defina o cluster padrão
Reabra a pasta
HDexample
discutida anteriormente, se estiver fechada.Selecione o arquivo HelloWorld.hql, criado anteriormente. Ele será aberto no editor de scripts.
Clique com o botão direito do mouse no editor de scripts e, em seguida, selecione Spark / Hive: 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 arquivo de configuração .VSCode\settings.json:
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.
Reabra a pasta
HDexample
discutida anteriormente, se estiver fechada.Selecione o arquivo HelloWorld.hql, criado anteriormente. Ele será aberto no editor de scripts.
Copie e cole o código a seguir no arquivo do Hive e depois 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: 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.
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:
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:
Reabra a pasta
HDexample
discutida anteriormente, se estiver fechada.Crie um 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 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.
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.
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.
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.
Selecione a opção Python abaixo.
Na barra de menus, navegue até Exibir>Paleta de Comandos... ou use o atalho de teclado Shift+Ctrl+P e insira Desenvolvedor: 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 Interativo / Synapse: Pyspark Interativo para enviar a consulta.
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:
Insira "%%info" e, em seguida, pressione Shift+Enter para exibir informações do trabalho (opcional):
A ferramenta também é compatível com a consulta Spark SQL:
Executar consulta interativa no arquivo PY usando um comentário #%%
Adicione #%% antes do código Py para obter experiência com o notebook.
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 do PySpark/Synapse PySpark, depois clique em Executar Célula novamente e o código será executado com sucesso.
Aproveite a compatibilidade do IPYNB com a extensão do Python
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 CodeClique no botão Executar Célula, siga os prompts para Definir o Pool do Spark padrão (sugerimos definir o cluster/pool padrão toda vez antes de abrir um notebook) e Recarregue a janela.
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.
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, em vez disso, use o Azure Synapse Analytics. E é uma alteração de longo prazo.
Enviar trabalho em lotes PySpark
Reabra a pasta
HDexample
discutida anteriormente, se estiver fechada.Crie um 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 batchouSynapse: PySpark Batch*
Selecione um Pool de cluster/spark para enviar o trabalho do PySpark para:
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
- Na barra de menus, navegue até Arquivo>Preferências>Configurações.
- Na caixa Pesquisar configurações, insira Envio de trabalho do HDInsight: Livy conf.
- 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:
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:
Conecte-se à sua conta do Azure se ainda não tiver feito isso.
Selecione o ícone do Azure na coluna mais à esquerda.
No painel à esquerda, expanda AZURE HDINSIGHT. As assinaturas e os clusters disponíveis são listados.
Expanda o cluster para exibir o esquema de banco de dados de metadados e tabela do Hive.
Clique com o botão direito do mouse na tabela Hive. Por exemplo: hivesampletable. Selecione Visualização.
A janela Visualizar resultados é aberta:
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
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".
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".
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.
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:
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:
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.
Vincular-se ao cluster
Insira um nome de usuário Ambari válido.
Insira uma senha válida.
Observação
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 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.
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.
Desvincular cluster
Na barra de menus, navegue até Exibir>Paleta de Comandos e, em seguida, insira Spark / Hive: Desvincular um cluster.
Selecione o cluster a ser desvinculado.
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.
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.