Enviar e gerenciar trabalhos em um cluster do Apache Spark™ no Azure HDInsight no AKS
Observação
Desativaremos o Microsoft Azure HDInsight no AKS em 31 de janeiro de 2025. Para evitar o encerramento abrupto das suas cargas de trabalho, você precisará migrá-las para o Microsoft Fabric ou para um produto equivalente do Azure antes de 31 de janeiro de 2025. Os clusters restantes em sua assinatura serão interrompidos e removidos do host.
Somente o suporte básico estará disponível até a data de desativação.
Importante
Esse recurso está atualmente na visualização. Os Termos de uso complementares para versões prévias do Microsoft Azure incluem mais termos legais que se aplicam aos recursos do Azure que estão em versão beta, em versão prévia ou ainda não lançados em disponibilidade geral. Para obter informações sobre essa versão prévia específica, confira Informações sobre a versão prévia do Azure HDInsight no AKS. Caso tenha perguntas ou sugestões de recursos, envie uma solicitação no AskHDInsight com os detalhes e siga-nos para ver mais atualizações sobre a Comunidade do Azure HDInsight.
Depois que o cluster é criado, o usuário pode usar várias interfaces para enviar e gerenciar trabalhos
- usando o Jupyter
- usando o Zeppelin
- usando ssh (spark-submit)
Usando o Jupyter
Pré-requisitos
Um cluster do Apache Spark™ no Azure HDInsight no AKS. Para obter mais informações, consulte Criar um cluster do Apache Spark.
O Jupyter Notebook é um ambiente de notebook interativo que oferece suporte a várias linguagens de programação.
Criará um Jupyter Notebook
Navegue até a página do cluster do Apache Spark™ e abra a guia Visão geral. Clique no Jupyter, ele solicita 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 notebook.
Um notebook é criado e aberto com o nome
Untitled(Untitled.ipynb)
.Observação
Ao usar o kernel do PySpark ou do Python 3 para criar um notebook, a sessão do spark será criada automaticamente quando você executar a primeira célula de código. Você não precisa criar a sessão explicitamente.
Cole o código a seguir em uma célula vazia do Jupyter Notebook e pressione SHIFT + ENTER para executar o código. Confira aqui como obter mais controles no 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'])
Plotar um grafo com Salário e idade como os eixos X e Y
No mesmo notebook, cole o código a seguir em uma célula vazia do Jupyter Notebook e pressione 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()
Salvar o notebook
Na barra de menus do notebook, navegue até Arquivo > Salvar e Ponto de Verificação.
Desligue o notebook para lançar os recursos de cluster: na barra de menus do notebook, navegue até Arquivo > Fechar e Interromper. Você também pode executar qualquer um dos notebooks na pasta de exemplos.
Usar notebooks do Apache Zeppelin
Os clusters do Apache Spark no Azure HDInsight no AKS incluem notebooks do Apache Zeppelin. Use os notebooks para executar trabalhos do Apache Spark. Neste artigo, você aprenderá a usar o notebook do Zeppelin em um cluster do HDInsight no AKS.
Pré-requisitos
Um cluster do Apache Spark no HDInsight no AKS. Para obter instruções, consulte Criar um cluster do Apache Spark.
Inicie um notebook do Apache Zeppelin
Navegue até a página Visão geral do cluster do Apache Spark e selecione o notebook Zeppelin em Painéis do Cluster. Ele solicita a autenticação e a abertura da página do Zeppelin.
Criar um notebook novo No painel de cabeçalho, navegue até Notebook > Criar anotação. Verifique se o cabeçalho do notebook mostra um status conectado. Isso é indicado por um ponto verde no canto superior direito.
Execute o seguinte código em um notebook do Zeppelin:
%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'])
Pressione o botão Executar do parágrafo para executar o snippet. O status no canto direito do parágrafo deve progredir de PRONTO, PENDENTE, EM EXCECUÇÃO para CONCLUÍDO. A saída é exibida na parte inferior do mesmo parágrafo. A captura de tela se parece com a seguinte imagem:
Saída:
Usando o envio de trabalhos do Spark
Crie um arquivo usando o seguinte comando: `#vim samplefile.py'
Esse comando abre o arquivo vim
Cole o código a seguir 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 método a seguir.
- Pressione o botão Escape
- Insira o comando
:wq
Execute o comando para executar o trabalho.
/spark-submit --master yarn --deploy-mode cluster <filepath>/samplefile.py
Monitorar consultas em um cluster do Apache Spark no Azure HDInsight HKS
Interface do usuário do histórico do Spark
Clique na interface do usuário do Servidor de Histórico do Spark na guia visão geral.
Selecione a execução recente da interface do usuário usando a mesma ID do aplicativo.
Exiba os ciclos do grafo direcionado acíclico e as fases do trabalho na interface do usuário do servidor de Histórico do Spark.
Interface do usuário da sessão do Livy
Para abrir a interface do usuário da sessão do Livy, digite o seguinte comando no seu navegador:
https://<CLUSTERNAME>.<CLUSTERPOOLNAME>.<REGION>.projecthilo.net/p/livy/ui
Exiba os logs de driver clicando na opção driver em logs.
Interface do usuário do YARN
Na guia Visão geral, clique em Yarn e abra a interface do usuário do Yarn.
Você pode acompanhar o trabalho executado recentemente pela mesma ID do aplicativo.
Clique na ID do aplicativo no Yarn para exibir logs detalhados do trabalho.
Referência
- Apache, Apache Spark, Spark e nomes de projeto de software livre associados são marcas comerciais da Apache Software Foundation (ASF).