Delen via


Tutorial: Run a Batch job through Data Factory with Batch Explorer, Storage Explorer, and Python

This tutorial walks you through creating and running an Azure Data Factory pipeline that runs an Azure Batch workload. A Python script runs on the Batch nodes to get comma-separated value (CSV) input from an Azure Blob Storage container, manipulate the data, and write the output to a different storage container. Je gebruikt Batch Explorer om een Batch pool en nodes te maken, en Azure Storage Explorer om te werken met opslagcontainers en bestanden.

In deze tutorial leer je hoe je:

  • Gebruik Batch Explorer om een Batch-pool en knooppunten te maken.
  • Gebruik Storage Explorer om opslagcontainers te maken en invoerbestanden te uploaden.
  • Ontwikkel een Python-script om invoergegevens te manipuleren en output te produceren.
  • Create a Data Factory pipeline that runs the Batch workload.
  • Gebruik Batch Explorer om de output logbestanden te bekijken.

Prerequisites

Gebruik Batch Explorer om een Batch-pool en knooppunten te maken

Gebruik Batch Explorer om een pool van rekendiensten te maken om uw werklast uit te voeren.

  1. Sign in to Batch Explorer with your Azure credentials.

  2. Selecteer uw Batch-account.

  3. Selecteer Pools in de linkerzijbalk en selecteer vervolgens het +-pictogram om een pool toe te voegen.

    Schermafbeelding van het aanmaken van een pool in Batch Explorer.

  4. Vul het formulier Een pool toevoegen aan de account in als volgt:

    • Under ID, enter custom-activity-pool.
    • Under Dedicated nodes, enter 2.
    • For Select an operating system configuration, select the Data science tab, and then select Dsvm Win 2019.
    • Voor Kies een formaat voor de virtuele machine, selecteer Standard_F2s_v2.
    • For Start Task, select Add a start task. On the start task screen, under Command line, enter cmd /c "pip install azure-storage-blob pandas", and then select Select. Deze opdracht installeert het azure-storage-blob pakket op elke node zodra het wordt gestart.
  5. Select Save and close.

Gebruik Storage Explorer om blobcontainers te maken

Gebruik Storage Explorer om blob containers te maken om invoer- en uitvoerbestanden op te slaan, en upload vervolgens uw invoerbestanden.

  1. Sign in to Storage Explorer with your Azure credentials.
  2. In the left sidebar, locate and expand the storage account that's linked to your Batch account.
  3. Klik met de rechtermuisknop op Blob Containers, en selecteer Create Blob Container, of selecteer Create Blob Container via Actions onderaan de zijbalk.
  4. Voer input in het invoerveld in.
  5. Maak nog een blobcontainer aan met de naam output.
  6. Selecteer de input container en selecteer vervolgens Upload>Bestanden uploaden in het rechterpaneel.
  7. Op het scherm Bestanden uploaden onder Geselecteerde bestanden, selecteer de drie puntjes ... naast het invoerveld.
  8. Navigeer naar de locatie van uw gedownloade iris.csv-bestand, selecteer Openen en selecteer vervolgens Uploaden.

Schermafbeelding van Storage Explorer met containers en blobs die in het opslagaccount zijn gemaakt.

Ontwikkel een Python-script

Het volgende Python-script laadt het iris.csv-datasetbestand van je Storage Explorer input-container, manipuleert de gegevens en slaat de resultaten op in de output-container.

Het script dient de verbindingsreeks te gebruiken voor het Azure Storage-account dat is gekoppeld aan uw Batch-account. Om de verbindingsreeks te verkrijgen:

  1. In de Azure-portal zoek en selecteer de naam van de opslagaccount die aan je Batch-account is gekoppeld.
  2. Op de pagina voor het opslagaccount selecteert u Toegangssleutels in de linker navigatie onder Beveiliging + netwerken.
  3. Under key1, select Show next to Connection string, and then select the Copy icon to copy the connection string.

Plak de verbindingstekst in het volgende script en vervang de <storage-account-connection-string> placeholder. Save the script as a file named main.py.

Belangrijk

Exposing account keys in the app source isn't recommended for Production usage. Je moet de toegang tot inloggegevens beperken en er in je code naar verwijzen door gebruik te maken van variabelen of een configuratiebestand. Het is het beste om Batch- en opslagaccountsleutels in Azure Key Vault op te slaan.

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

# 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)

# Initialize the BlobServiceClient (This initializes a connection to the Azure Blob Storage, downloads the content of the 'iris.csv' file, and then loads it into a Pandas DataFrame for further processing.)
blob_service_client = BlobServiceClient.from_connection_string(conn_str=connectionString)
blob_client = blob_service_client.get_blob_client(container_name=containerName, blob_name=outputBlobName)

# Download the blob content
blob_data = blob_client.download_blob().readall()

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

# 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)

For more information on working with Azure Blob Storage, refer to the Azure Blob Storage documentation.

Voer het script lokaal uit om de functionaliteit te testen en valideren.

python main.py

The script should produce an output file named iris_setosa.csv that contains only the data records that have Species = setosa. After you verify that it works correctly, upload the main.py script file to your Storage Explorer input container.

Stel een Data Factory-pijplijn in

Create and validate a Data Factory pipeline that uses your Python script.

Verkrijg accountinformatie

De Data Factory-pijplijn maakt gebruik van uw Batch- en Storage-accountnamen, accountcodes en Batch-accountendpoint. Verkrijg deze informatie van de Azure portal:

  1. Zoek in de Azure-zoekbalk naar uw Batch-accountnaam en selecteer deze.

  2. On your Batch account page, select Keys from the left navigation.

  3. Op de Sleutels pagina, kopieer de volgende waarden:

    • Batch account
    • Account-eindpunt
    • Primaire toegangssleutel
    • Naam van opslagaccount
    • Key1

Create and run the pipeline

  1. If Azure Data Factory Studio isn't already running, select Launch studio on your Data Factory page in the Azure portal.

  2. In Data Factory Studio, selecteer het Author-potloodpictogram in de linker navigatiebalk.

  3. Onder Factory Resources, selecteer het +-icoon en selecteer vervolgens Pipeline.

  4. In het Eigenschappen-venster aan de rechterkant, verander de naam van de pijplijn naar Run Python.

    Schermafbeelding van Data Factory Studio nadat u Toevoegen pipeline hebt geselecteerd.

  5. In the Activities pane, expand Batch Service, and drag the Custom activity to the pipeline designer surface.

  6. Below the designer canvas, on the General tab, enter testPipeline under Name.

    Schermafbeelding van het tabblad Algemeen voor het maken van een pipeline-taak.

  7. Select the Azure Batch tab, and then select New.

  8. Vul het formulier Nieuwe gekoppelde service als volgt in:

    • Naam: Voer een naam in voor de gekoppelde service, zoals AzureBatch1.
    • Toegangssleutel: Voer de primaire toegangssleutel in die je hebt gekopieerd van je Batch-account.
    • Account name: Voer uw Batch-accountnaam in.
    • Batch URL: Voer het account-eindpunt in dat je hebt gekopieerd van je Batch-account, zoals https://batchdotnet.eastus.batch.azure.com.
    • Poolnaam: Voer custom-activity-pool in, de pool die je in Batch Explorer hebt gemaakt.
    • Storage account linked service name: Selecteer Nieuw. Op het volgende scherm, voer een Naam in voor de gekoppelde opslagservice, zoals AzureBlobStorage1, selecteer je Azure-abonnement en gekoppelde opslagaccount, en selecteer vervolgens Maken.
  9. Onderaan het Batch Nieuwe gekoppelde service scherm, selecteer Verbinding testen. Wanneer de verbinding succesvol is, selecteer Create.

    Schermafbeelding van het scherm Nieuwe gekoppelde service voor de Batch-taak.

  10. Selecteer het Instellingen tabblad, en voer de volgende instellingen in of selecteer ze.

    • Opdracht: Druk op cmd /C python main.py.
    • Koppelingsservice resource: Selecteer de gekoppelde opslagservice die je hebt gemaakt, zoals AzureBlobStorage1, en test de verbinding om ervoor te zorgen dat deze succesvol is.
    • Map pad: Selecteer het mapicoon en selecteer vervolgens de invoer container en klik op OK. De bestanden uit deze map worden van de container naar de poolnodes gedownload voordat het Python-script wordt uitgevoerd.

    Screenshot of the Settings tab for the Batch job.

  11. Selecteer Valideren op de pijplijnwerkbalk om de pijplijn te valideren.

  12. Selecteer Debug om de pijplijn te testen en ervoor te zorgen dat deze correct werkt.

  13. Selecteer Publish all om de pijplijn te publiceren.

  14. Selecteer Trigger toevoegen en selecteer vervolgens Nu activeren om de pijplijn uit te voeren, of Nieuw/Bewerken om deze in te plannen.

    Screenshot van de selecties Valideren, Debuggen, Alles publiceren, en Trigger toevoegen in Data Factory.

Gebruik Batch Explorer om logbestanden te bekijken

Als het uitvoeren van je pipeline waarschuwingen of fouten oplevert, kun je Batch Explorer gebruiken om de stdout.txt en stderr.txt uitvoerbestanden te bekijken voor meer informatie.

  1. Kies in Batch Explorer Jobs in de linkerzijbalk.
  2. Select the adfv2-custom-activity-pool job.
  3. Selecteer een taak die een mislukte uitgangscode had.
  4. Bekijk de bestanden stdout.txt en stderr.txt om uw probleem te onderzoeken en te diagnosticeren.

Opruimen van middelen

Batch accounts, jobs, and tasks are free, but compute nodes incur charges even when they're not running jobs. It's best to allocate node pools only as needed, and delete the pools when you're done with them. Deleting pools deletes all task output on the nodes, and the nodes themselves.

Input and output files remain in the storage account and can incur charges. When you no longer need the files, you can delete the files or containers. Wanneer je je Batch-account of gekoppelde opslagaccount niet langer nodig hebt, kun je ze verwijderen.

Volgende stappen

In this tutorial, you learned how to use a Python script with Batch Explorer, Storage Explorer, and Data Factory to run a Batch workload. For more information about Data Factory, see What is Azure Data Factory?