Enviar e gerenciar trabalhos em um cluster Apache Spark™ no HDInsight no AKS
Nota
Vamos desativar o Azure HDInsight no AKS em 31 de janeiro de 2025. Antes de 31 de janeiro de 2025, você precisará migrar suas cargas de trabalho para o Microsoft Fabric ou um produto equivalente do Azure para evitar o encerramento abrupto de suas cargas de trabalho. Os clusters restantes na sua subscrição serão interrompidos e removidos do anfitrião.
Apenas o apoio básico estará disponível até à data da reforma.
Importante
Esta funcionalidade está atualmente em pré-visualização. Os Termos de Utilização Suplementares para Pré-visualizações do Microsoft Azure incluem mais termos legais que se aplicam a funcionalidades do Azure que estão em versão beta, em pré-visualização ou ainda não disponibilizadas para disponibilidade geral. Para obter informações sobre essa visualização específica, consulte Informações de visualização do Azure HDInsight no AKS. Para perguntas ou sugestões de recursos, envie uma solicitação no AskHDInsight com os detalhes e siga-nos para obter mais atualizações na Comunidade do Azure HDInsight.
Depois que o cluster é criado, o usuário pode usar várias interfaces para enviar e gerenciar trabalhos por
- usando Jupyter
- utilizando Zeppelin
- Usando SSH (Spark-Submit)
Usando o Jupyter
Pré-requisitos
Um cluster Apache Spark™ no HDInsight no AKS. Para obter mais informações, consulte Criar um cluster do Apache Spark.
O Jupyter Notebook é um ambiente de bloco de notas interativo que suporta várias linguagens de programação.
Criar um Bloco de Notas do Jupyter Notebook
Navegue até a página do cluster Apache Spark™ e abra a guia Visão geral . Clique em Jupyter, ele pede que você autentique e abra a página da web do Jupyter.
Na página da Web do Jupyter, selecione Novo > PySpark para criar um bloco de anotações.
Um novo bloco de notas criado e aberto com o nome
Untitled(Untitled.ipynb)
.Nota
Usando o PySpark ou o kernel Python 3 para criar um bloco de anotações, a sessão de faísca é criada automaticamente para você quando você executa a primeira célula de código. Não precisa de criar explicitamente a sessão.
Cole o código a seguir em uma célula vazia do Jupyter Notebook e pressione SHIFT + ENTER para executar o código. Veja aqui mais controles sobre o Jupyter.
%matplotlib inline import pandas as pd import matplotlib.pyplot as plt data1 = [22,40,10,50,70] s1 = pd.Series(data1) #One-dimensional ndarray with axis labels (including time series). data2 = data1 index = ['John','sam','anna','smith','ben'] s2 = pd.Series(data2,index=index) data3 = {'John':22, 'sam':40, 'anna':10,'smith':50,'ben':70} s3 = pd.Series(data3) s3['jp'] = 32 #insert a new row s3['John'] = 88 names = ['John','sam','anna','smith','ben'] ages = [10,40,50,48,70] name_series = pd.Series(names) age_series = pd.Series(ages) data_dict = {'name':name_series, 'age':age_series} dframe = pd.DataFrame(data_dict) #create a pandas DataFrame from dictionary dframe['age_plus_five'] = dframe['age'] + 5 #create a new column dframe.pop('age_plus_five') #dframe.pop('age') salary = [1000,6000,4000,8000,10000] salary_series = pd.Series(salary) new_data_dict = {'name':name_series, 'age':age_series,'salary':salary_series} new_dframe = pd.DataFrame(new_data_dict) new_dframe['average_salary'] = new_dframe['age']*90 new_dframe.index = new_dframe['name'] print(new_dframe.loc['sam'])
Plote um gráfico com Salário e idade como os eixos X e Y
No mesmo bloco de notas, cole o seguinte código numa célula vazia do Jupyter Notebook e, em seguida, prima SHIFT + ENTER para executar o código.
%matplotlib inline import pandas as pd import matplotlib.pyplot as plt plt.plot(age_series,salary_series) plt.show()
Guardar o Bloco de Notas
Na barra de menus do bloco de anotações, navegue até Salvar arquivo > e Ponto de verificação.
Desligue o bloco de anotações para liberar os recursos do cluster: na barra de menus do bloco de anotações, navegue até Fechar e Parar Arquivo > . Você também pode executar qualquer um dos blocos de anotações na pasta de exemplos.
Usando notebooks Apache Zeppelin
Os clusters Apache Spark no HDInsight no AKS incluem notebooks Apache Zeppelin. Use os blocos de anotações para executar trabalhos do Apache Spark. Neste artigo, você aprenderá a usar o notebook Zeppelin em um cluster HDInsight no AKS.
Pré-requisitos
Um cluster Apache Spark no HDInsight no AKS. Para obter instruções, consulte Criar um cluster do Apache Spark.
Iniciar um notebook Apache Zeppelin
Navegue até a página Visão geral do cluster Apache Spark e selecione o bloco de anotações Zeppelin nos painéis do cluster. Ele solicita a autenticação e abertura da página do Zeppelin.
Crie um novo bloco de notas. No painel de cabeçalho, navegue até Bloco de Anotações > Criar nova nota. Verifique se o cabeçalho do bloco de anotações mostra um status conectado. Denota um ponto verde no canto superior direito.
Execute o seguinte código no Zeppelin Notebook:
%livy.pyspark import pandas as pd import matplotlib.pyplot as plt data1 = [22,40,10,50,70] s1 = pd.Series(data1) #One-dimensional ndarray with axis labels (including time series). data2 = data1 index = ['John','sam','anna','smith','ben'] s2 = pd.Series(data2,index=index) data3 = {'John':22, 'sam':40, 'anna':10,'smith':50,'ben':70} s3 = pd.Series(data3) s3['jp'] = 32 #insert a new row s3['John'] = 88 names = ['John','sam','anna','smith','ben'] ages = [10,40,50,48,70] name_series = pd.Series(names) age_series = pd.Series(ages) data_dict = {'name':name_series, 'age':age_series} dframe = pd.DataFrame(data_dict) #create a pandas DataFrame from dictionary dframe['age_plus_five'] = dframe['age'] + 5 #create a new column dframe.pop('age_plus_five') #dframe.pop('age') salary = [1000,6000,4000,8000,10000] salary_series = pd.Series(salary) new_data_dict = {'name':name_series, 'age':age_series,'salary':salary_series} new_dframe = pd.DataFrame(new_data_dict) new_dframe['average_salary'] = new_dframe['age']*90 new_dframe.index = new_dframe['name'] print(new_dframe.loc['sam'])
Selecione o botão Reproduzir para o parágrafo para executar o trecho. O status no canto direito do parágrafo deve progredir de PRONTO, PENDENTE, EM EXECUÇÃO para CONCLUÍDO. A saída aparece na parte inferior do mesmo parágrafo. A captura de tela se parece com a seguinte imagem:
Saída:
Usando o Spark enviar trabalhos
Crie um ficheiro utilizando o seguinte comando '#vim samplefile.py'
Este comando abre o arquivo vim
Cole o seguinte código no arquivo vim
import pandas as pd import matplotlib.pyplot as plt From pyspark.sql import SparkSession Spark = SparkSession.builder.master('yarn').appName('SparkSampleCode').getOrCreate() # Initialize spark context data1 = [22,40,10,50,70] s1 = pd.Series(data1) #One-dimensional ndarray with axis labels (including time series). data2 = data1 index = ['John','sam','anna','smith','ben'] s2 = pd.Series(data2,index=index) data3 = {'John':22, 'sam':40, 'anna':10,'smith':50,'ben':70} s3 = pd.Series(data3) s3['jp'] = 32 #insert a new row s3['John'] = 88 names = ['John','sam','anna','smith','ben'] ages = [10,40,50,48,70] name_series = pd.Series(names) age_series = pd.Series(ages) data_dict = {'name':name_series, 'age':age_series} dframe = pd.DataFrame(data_dict) #create a pandas DataFrame from dictionary dframe['age_plus_five'] = dframe['age'] + 5 #create a new column dframe.pop('age_plus_five') #dframe.pop('age') salary = [1000,6000,4000,8000,10000] salary_series = pd.Series(salary) new_data_dict = {'name':name_series, 'age':age_series,'salary':salary_series} new_dframe = pd.DataFrame(new_data_dict) new_dframe['average_salary'] = new_dframe['age']*90 new_dframe.index = new_dframe['name'] print(new_dframe.loc['sam'])
Salve o arquivo com o seguinte método.
- Pressione o botão Escape
- Digite o comando
:wq
Execute o seguinte comando para executar o trabalho.
/spark-submit --master yarn --deploy-mode cluster <filepath>/samplefile.py
Monitorar consultas em um cluster Apache Spark no HDInsight no AKS
Interface do usuário do Spark History
Clique na interface do usuário do Spark History Server na guia Visão geral.
Selecione a execução recente na interface do usuário usando a mesma ID do aplicativo.
Exiba os ciclos do Gráfico Acíclico Direcionado e os estágios do trabalho na interface do usuário do servidor Spark History.
UI da sessão Livy
Para abrir a interface do usuário da sessão Livy, digite o seguinte comando no navegador
https://<CLUSTERNAME>.<CLUSTERPOOLNAME>.<REGION>.projecthilo.net/p/livy/ui
Veja os logs do driver clicando na opção de driver em logs.
Fio UI
Na guia Visão geral, clique em Yarn e abra a interface do usuário do Yarn.
Você pode acompanhar o trabalho executado recentemente pelo mesmo ID de aplicativo.
Clique no ID do aplicativo no Yarn para visualizar os logs detalhados do trabalho.
Referência
- Apache, Apache Spark, Spark e nomes de projetos de código aberto associados são marcas comerciais da Apache Software Foundation (ASF).