Tutorial: Executar um trabalho em lote através do Data Factory com o Batch Explorer, Storage Explorer e Python

Este tutorial orienta você na criação e execução de um pipeline do Azure Data Factory que executa uma carga de trabalho do Azure Batch. Um script Python é executado nos nós de lote para obter entrada de valor separado por vírgulas (CSV) de um contêiner de Armazenamento de Blob do Azure, manipular os dados e gravar a saída em um contêiner de armazenamento diferente. Use o Batch Explorer para criar um pool de lotes e nós, e o Azure Storage Explorer para trabalhar com contêineres e arquivos de armazenamento.

Neste tutorial, irá aprender a:

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

Pré-requisitos

Usar o Batch Explorer para criar um pool de lotes e nós

Use 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 suas credenciais do Azure.

  2. Selecione sua conta Batch.

  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.
    • Para Selecione uma configuração de sistema operacional, selecione a guia Ciência de dados e, em seguida, selecione Dsvm Win 2019.
    • Em Escolha um tamanho de máquina virtual, selecione Standard_F2s_v2.
    • Em Iniciar tarefa, selecione Adicionar uma tarefa inicial. No ecrã Iniciar tarefa, em Linha de comandos, introduza cmd /c "pip install azure-storage-blob pandas"e, em seguida, selecione Selecionar. Este comando instala o azure-storage-blob pacote em cada nó à medida que é iniciado.
  5. Selecione Guardar e fechar.

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

Use o Gerenciador de Armazenamento para criar contêineres de blob para armazenar arquivos de entrada e saída e, em seguida, carregue seus arquivos de entrada.

  1. Entre no Gerenciador de Armazenamento com suas credenciais do Azure.
  2. Na barra lateral esquerda, localize e expanda a conta de armazenamento vinculada à sua conta do Batch.
  3. Clique com o botão direito do mouse em Contêineres de Blob e selecione Criar Contêiner de Blob ou selecione Criar Contêiner de Blob em Ações na parte inferior da barra lateral.
  4. Insira a entrada no campo de entrada.
  5. Crie outro contêiner de blob chamado output.
  6. Selecione o contêiner de entrada e, em seguida, selecione 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é a localização do arquivo de iris.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 Python

O script Python a seguir carrega o arquivo de conjunto de dados iris.csv do contêiner de entrada do Storage Explorer, 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 Azure vinculada à sua conta em lote. Para obter a cadeia de conexão:

  1. No portal do Azure, procure e selecione o nome da conta de armazenamento vinculada à sua conta do Batch.
  2. Na página da conta de armazenamento, selecione Teclas de acesso na navegação à esquerda em Segurança + rede.
  3. Em tecla 1, 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 <storage-account-connection-string> espaço reservado. 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 de Lote e Armazenamento no Cofre de Chaves do Azure.

# 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 contenha apenas os registros de dados que têm Species = setosa. Depois de verificar se ele funciona corretamente, carregue o arquivo de script main.py para o contêiner de entrada do Storage Explorer.

Configurar um pipeline do Data Factory

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

Obter informações da conta

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

  1. Na barra de Pesquisa do Azure, procure e selecione o nome da sua conta de lote.

  2. Na página Conta do lote, selecione Teclas na navegação à esquerda.

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

    • Conta em lote
    • Ponto final da conta
    • Chave de acesso primária
    • Nome da conta de armazenamento
    • Chave1

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 Run Python.

    Screenshot of Data Factory Studio after you select Add pipeline.

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

  6. Abaixo da tela do designer, na guia Geral , digite testPipeline em Name.

    Screenshot of the General tab for creating a pipeline task.

  7. Selecione a guia Lote do Azure e, em seguida, selecione 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 Batch.
    • Nome da conta: insira o nome da sua conta do lote.
    • URL do lote: insira o ponto de extremidade da conta que você copiou da 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 à conta de armazenamento: selecione Novo. Na tela seguinte, insira um Nome para o serviço de armazenamento vinculado, como AzureBlobStorage1, selecione sua assinatura do Azure e conta de armazenamento vinculada e selecione Criar.
  9. Na parte inferior da tela Batch New linked service, selecione Test connection. 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: Digite cmd /C python main.py.
    • Serviço vinculado a recursos: selecione o serviço de armazenamento vinculado que você criou, como AzureBlobStorage1, e teste a conexão para garantir que ela seja bem-sucedida.
    • Caminho da pasta: Selecione o ícone da pasta e, em seguida, selecione o contêiner de entrada e selecione OK. Os arquivos desta pasta são baixados do contêiner para os nós do pool antes que o script Python seja executado.

    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 Gatilho agora para executar o pipeline ou Novo/Editar para agendar.

    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 Jobs na barra lateral esquerda.
  2. Selecione o trabalho adfv2-custom-activity-pool .
  3. Selecione uma tarefa que tenha um código de saída de falha.
  4. Veja os ficheiros stdout.txt e stderr.txt para investigar e diagnosticar o seu problema.

Clean up resources (Limpar recursos)

Contas em lote, trabalhos e tarefas são gratuitos, mas os nós de computação incorrem em cobranças mesmo quando não estão executando trabalhos. É melhor alocar pools de nós somente conforme necessário e excluir os pools quando terminar de usá-los. A exclusão de pools exclui toda a saída de tarefas nos nós e nos próprios nós.

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á excluí-los ou contêineres. Quando não precisar mais da sua conta do Batch ou da conta de armazenamento vinculada, você poderá excluí-los.

Próximos passos

Neste tutorial, você aprendeu como usar um script Python com o Batch Explorer, o Storage Explorer e o Data Factory para executar uma carga de trabalho em lote. Para obter mais informações sobre o Data Factory, consulte O que é o Azure Data Factory?