Tutorial: Executar um trabalho do Lote por meio do Data Factory com o Batch Explorer, o Gerenciador de Armazenamento e o Python

Este tutorial explica como criar e executar um pipeline do Azure Data Factory que executa uma carga de trabalho do Lote do Azure. Um script Python é executado nos nós do Lote para obter a entrada CSV (valor separado por vírgula) de um contêiner de Armazenamento de Blobs do Azure, manipular os dados e gravar a saída em um contêiner de armazenamento diferente. Você usa o Batch Explorer para criar um pool e nós do Lote e Gerenciador de Armazenamento do Microsoft Azure para trabalhar com contêineres e arquivos de armazenamento.

Neste tutorial, você aprenderá como:

  • Usar o Batch Explorer para criar um pool e nós do Lote.
  • Usar o Gerenciador de Armazenamento para criar contêineres de armazenamento e carregar arquivos de entrada.
  • Desenvolver um script do Python para manipular dados de entrada e produzir a saída.
  • Criar um pipeline do Data Factory que execute a carga de trabalho do Lote.
  • Usar o Batch Explorer para examinar os arquivos de log de saída.

Pré-requisitos

Usar o Batch Explorer para criar um pool e nós do Lote

Usar o Batch Explorer para criar um pool de nós de computação para executar sua carga de trabalho.

  1. Entre no Batch Explorer com as suas credenciais do Azure.

  2. Selecione sua conta do Lote.

  3. Selecione Pools na barra lateral esquerda e, em seguida, selecione o ícone + para adicionar um pool.

    Screenshot of creating a pool in Batch Explorer.

  4. Preencha o formulário Adicionar um pool à conta da seguinte maneira:

    • Em ID, insira custom-activity-pool.
    • Em Nós dedicados, insira 2.
    • Em Selecione uma configuração do sistema operacional, selecione a guia Ciência de dados e, em seguida, selecione Dsvm Win 2019.
    • Em Escolher um tamanho de máquina virtual, selecione Standard_F2s_v2.
    • Para Tarefa inicial, selecione Adicionar uma tarefa inicial. Na tela de tarefa inicial, em Linha de comando, insira cmd /c "pip install azure-storage-blob pandas" e selecione Selecionar. Esse comando instala o pacote azure-storage-blob em cada nó conforme ele é iniciado.
  5. Selecione Salvar e fechar.

Usar o Gerenciador de Armazenamento para criar contêineres de blobs

Usar o Gerenciador de Armazenamento para criar contêineres de blobs para armazenar arquivos de entrada e saída e carregar seus arquivos de entrada.

  1. Entre no Gerenciador de Armazenamento com as suas credenciais do Azure.
  2. Na barra lateral esquerda, localize e expanda a conta de armazenamento vinculada à sua conta do Lote.
  3. Clique com o botão direito do mouse em Contêineres de blobs e selecione Criar contêiner de blobs ou selecione Criar contêiner de blobs em Ações na parte inferior da barra lateral.
  4. Insira entrada no campo de entrada.
  5. Crie outro contêiner de blob chamado saída.
  6. Selecione o contêiner de entrada e, em seguida, selecione Carregar>Carregar arquivos no painel direito.
  7. Na tela Carregar arquivos, em Arquivos selecionados, selecione as reticências ... ao lado do campo de entrada.
  8. Navegue até o local do arquivo deiris.csv baixado, selecione Abrir e, em seguida, selecione Carregar.

Screenshot of Storage Explorer with containers and blobs created in the storage account.

Desenvolver um script do Python

O script do Python a seguir carrega o arquivo de conjunto de dados iris.csv do seu contêiner de entrada do Gerenciador de Armazenamento, manipula os dados e salva os resultados no contêiner de saída.

O script precisa usar a cadeia de conexão para a conta de Armazenamento do Microsoft Azure vinculada à sua conta do Lote. Para obter a cadeia de conexão:

  1. No portal do Azure, pesquise e selecione o nome da conta de armazenamento vinculada à sua conta do Lote.
  2. Na página da conta de armazenamento, selecione Chaves de acesso na navegação à esquerda em Segurança + rede.
  3. Em key1, selecione Mostrar ao lado de Cadeia de conexão e, em seguida, selecione o ícone Copiar para copiar a cadeia de conexão.

Cole a cadeia de conexão no script a seguir, substituindo o espaço reservado <storage-account-connection-string>. Salve o script como um arquivo chamado main.py.

Importante

A exposição de chaves de conta na origem do aplicativo não é recomendada para uso em produção. Você deve restringir o acesso às credenciais e consultá-las em seu código, usando variáveis ou um arquivo de configuração. É melhor armazenar chaves de conta do Lote e do Armazenamento no Azure Key Vault.

# Load libraries
from azure.storage.blob import BlobClient
import pandas as pd

# Define parameters
connectionString = "<storage-account-connection-string>"
containerName = "output"
outputBlobName	= "iris_setosa.csv"

# Establish connection with the blob storage account
blob = BlobClient.from_connection_string(conn_str=connectionString, container_name=containerName, blob_name=outputBlobName)

# Load iris dataset from the task node
df = pd.read_csv("iris.csv")

# Take a subset of the records
df = df[df['Species'] == "setosa"]

# Save the subset of the iris dataframe locally in the task node
df.to_csv(outputBlobName, index = False)

with open(outputBlobName, "rb") as data:
    blob.upload_blob(data, overwrite=True)

Execute o script localmente para testar e validar a funcionalidade.

python main.py

O script deve produzir um arquivo de saída chamado iris_setosa.csv que contém apenas os registros de dados que têm Species = setosa. Depois de verificar se ele funciona corretamente, carregue o arquivo de script main.py no contêiner de entrada do Gerenciador de Armazenamento.

Configurar um pipeline do Data Factory

Crie e valide um pipeline do Data Factory que usa o script do Python.

Obter Informações da conta

O pipeline do Data Factory usa os nomes da conta do Lote e do Armazenamento, os valores de chave de conta e o ponto de extremidade da conta do Lote. Para obter essas informações do portal do Azure:

  1. Na barra do Azure Search, pesquise e selecione o nome da conta do Lote.

  2. Na página da Conta do Lote, selecione Chaves na navegação à esquerda.

  3. Na página Chaves, copie os seguintes valores:

    • conta do Lote
    • Ponto de extremidade da conta
    • Chave de acesso primária
    • Nome da conta de armazenamento
    • Key1

Criar e executar o pipeline

  1. Se o Azure Data Factory Studio ainda não estiver em execução, selecione Iniciar estúdio na página do Data Factory no portal do Azure.

  2. No Data Factory Studio, selecione o ícone de lápis Autor na navegação à esquerda.

  3. Em Recursos de fábrica, selecione o ícone + e, em seguida, selecione Pipeline.

  4. No painel Propriedades à direita, altere o nome do pipeline para Executar Python.

    Screenshot of Data Factory Studio after you select Add pipeline.

  5. No painel Atividades, expanda Serviço de Lote e arraste a atividade Personalizado para a superfície do designer de pipeline.

  6. Abaixo da tela do designer, na guia Geral, insira testPipeline em Nome.

    Screenshot of the General tab for creating a pipeline task.

  7. Selecione a guia Lote do Azure e escolha Novo.

  8. Preencha o formulário Novo serviço vinculado da seguinte maneira:

    • Nome: insira um nome para o serviço vinculado, como AzureBatch1.
    • Chave de acesso: insira a chave de acesso primária que você copiou da sua conta do Lote.
    • Nome da conta: insira o nome da conta do Lote.
    • URL do Lote: insira o ponto de extremidade da conta copiado de sua conta do Lote, como https://batchdotnet.eastus.batch.azure.com.
    • Nome do pool: insira custom-activity-pool, o pool que você criou no Batch Explorer.
    • Nome do serviço vinculado da conta de armazenamento: selecione Novo. Na próxima tela, insira um Nome para o serviço de armazenamento vinculado, como AzureBlobStorage1, selecione sua assinatura do Azure e a conta de armazenamento vinculada e selecione Criar.
  9. Na parte inferior da tela Novo serviço vinculado do Lote, selecione Testar conexão. Quando a conexão for bem-sucedida, selecione Criar.

    Screenshot of the New linked service screen for the Batch job.

  10. Selecione a guia Configurações e insira ou selecione as seguintes configurações:

    • Comando: insira cmd /C python main.py.
    • Serviço vinculado ao recurso: selecione o serviço de armazenamento vinculado que você criou, como AzureBlobStorage1, e teste a conexão para certificar-se de que seja bem-sucedida.
    • Caminho da pasta: selecione o ícone de pasta e, em seguida, selecione o contêiner de entrada e selecione OK. Os arquivos dessa pasta são baixados do contêiner para os nós do pool antes da execução do script do Python.

    Screenshot of the Settings tab for the Batch job.

  11. Selecione Validar na barra de ferramentas do pipeline para validar o pipeline.

  12. Selecione Depurar para testar o pipeline e garantir que ele funcione corretamente.

  13. Selecione Publicar tudo para publicar o pipeline.

  14. Selecione Adicionar gatilho e, em seguida, selecione Disparar agora para executar o pipeline ou Novo/Editar para agendá-lo.

    Screenshot of Validate, Debug, Publish all, and Add trigger selections in Data Factory.

Usar o Batch Explorer para exibir arquivos de log

Se a execução do pipeline produzir avisos ou erros, você poderá usar o Batch Explorer para examinar os arquivos de saída stdout.txt e stderr.txt para obter mais informações.

  1. No Batch Explorer, selecione Trabalhos na barra lateral esquerda.
  2. Selecione o trabalho adfv2-custom-activity-pool .
  3. Selecione uma tarefa que tinha um código de saída de falha.
  4. Exiba os arquivos stdout.txt e stderr.txt para investigar e diagnosticar seu problema.

Limpar recursos

Contas, trabalhos e tarefas do Lote são gratuitos, mas os nós de computação incorrem em encargos mesmo quando não estão executando trabalhos. É melhor alocar pools de nós somente conforme necessário e excluir os pools à medida que os finaliza. Excluir pools exclui todas as saídas de tarefa nos nós, bem como os nós em si.

Os arquivos de entrada e saída permanecem na conta de armazenamento e podem incorrer em encargos. Quando você não precisar mais dos arquivos, poderá excluir os arquivos ou contêineres. Quando você não precisar mais da sua conta do Lote ou da conta de armazenamento vinculada, poderá excluí-las.

Próximas etapas

Neste tutorial, você aprendeu a usar um script do Python com o Batch Explorer, o Gerenciador de Armazenamento e o Data Factory para executar uma carga de trabalho do Lote. Para saber mais sobre o Azure Data Factory, confira O que é o Azure Data Factory?