Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
- Een Azure-account met een actieve abonnement. Als je er geen hebt, maak een gratis account aan.
- Een Batch-account met een gekoppeld Azure Storage-account. U kunt de accounts aanmaken met een van de volgende methoden: Azure portal | Azure CLI | Bicep | ARM template | Terraform.
- Een Data Factory-instantie. Om de datafabriek aan te maken, volgt u de instructies in Een datafabriek maken.
- Batch Explorer is gedownload en geïnstalleerd.
- Storage Explorer gedownload en geïnstalleerd.
-
Python 3.8 or above, with the azure-storage-blob package installed by using
pip
. - The iris.csv input dataset downloaded from GitHub.
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.
Sign in to Batch Explorer with your Azure credentials.
Selecteer uw Batch-account.
Selecteer Pools in de linkerzijbalk en selecteer vervolgens het +-pictogram om een pool toe te voegen.
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 hetazure-storage-blob
pakket op elke node zodra het wordt gestart.
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.
- Sign in to Storage Explorer with your Azure credentials.
- In the left sidebar, locate and expand the storage account that's linked to your Batch account.
- Klik met de rechtermuisknop op Blob Containers, en selecteer Create Blob Container, of selecteer Create Blob Container via Actions onderaan de zijbalk.
- Voer input in het invoerveld in.
- Maak nog een blobcontainer aan met de naam output.
- Selecteer de input container en selecteer vervolgens Upload>Bestanden uploaden in het rechterpaneel.
- Op het scherm Bestanden uploaden onder Geselecteerde bestanden, selecteer de drie puntjes ... naast het invoerveld.
- Navigeer naar de locatie van uw gedownloade iris.csv-bestand, selecteer Openen en selecteer vervolgens Uploaden.
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:
- In de Azure-portal zoek en selecteer de naam van de opslagaccount die aan je Batch-account is gekoppeld.
- Op de pagina voor het opslagaccount selecteert u Toegangssleutels in de linker navigatie onder Beveiliging + netwerken.
- 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:
Zoek in de Azure-zoekbalk naar uw Batch-accountnaam en selecteer deze.
On your Batch account page, select Keys from the left navigation.
Op de Sleutels pagina, kopieer de volgende waarden:
- Batch account
- Account-eindpunt
- Primaire toegangssleutel
- Naam van opslagaccount
- Key1
Create and run the pipeline
If Azure Data Factory Studio isn't already running, select Launch studio on your Data Factory page in the Azure portal.
In Data Factory Studio, selecteer het Author-potloodpictogram in de linker navigatiebalk.
Onder Factory Resources, selecteer het +-icoon en selecteer vervolgens Pipeline.
In het Eigenschappen-venster aan de rechterkant, verander de naam van de pijplijn naar Run Python.
In the Activities pane, expand Batch Service, and drag the Custom activity to the pipeline designer surface.
Below the designer canvas, on the General tab, enter testPipeline under Name.
Select the Azure Batch tab, and then select New.
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.
Onderaan het Batch Nieuwe gekoppelde service scherm, selecteer Verbinding testen. Wanneer de verbinding succesvol is, selecteer Create.
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.
-
Opdracht: Druk op
Selecteer Valideren op de pijplijnwerkbalk om de pijplijn te valideren.
Selecteer Debug om de pijplijn te testen en ervoor te zorgen dat deze correct werkt.
Selecteer Publish all om de pijplijn te publiceren.
Selecteer Trigger toevoegen en selecteer vervolgens Nu activeren om de pijplijn uit te voeren, of Nieuw/Bewerken om deze in te plannen.
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.
- Kies in Batch Explorer Jobs in de linkerzijbalk.
- Select the adfv2-custom-activity-pool job.
- Selecteer een taak die een mislukte uitgangscode had.
- 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?