Tutorial: Ausführen eines Batchauftrags über Data Factory mit Batch Explorer, Storage-Explorer und Python

In diesem Tutorial erfahren Sie, wie Sie eine Azure Data Factory-Pipeline zum Ausführen einer Azure Batch-Workload erstellen und ausführen. Ein Python-Skript wird auf den Batch-Knoten ausgeführt, um CSV-Eingaben (kommagetrennte Werte) aus einem Azure Blob Storage-Container abzurufen, die Daten zu bearbeiten und die Ausgabe in einen anderen Speichercontainer zu schreiben. Sie verwenden Batch Explorer, um einen Batch-Pool und Batch-Knoten zu erstellen, und Azure Storage-Explorer, um mit Speichercontainern und -dateien zu arbeiten.

In diesem Tutorial lernen Sie Folgendes:

  • Verwenden Sie Batch Explorer, um einen Batch-Pool und Batch-Knoten zu erstellen.
  • Verwenden Sie Storage-Explorer, um Speichercontainer zu erstellen und Eingabedateien hochzuladen.
  • Entwickeln Sie ein Python-Skript, um Eingabedaten zu bearbeiten und Ausgaben zu erzeugen.
  • Erstellen Sie eine Data Factory-Pipeline, die die Batch-Workload ausführt.
  • Verwenden Sie Batch Explorer, um die Ausgabeprotokolldateien anzuzeigen.

Voraussetzungen

Verwenden von Batch Explorer zum Erstellen von Batch-Pool und Batch-Knoten

Verwenden Sie Batch Explorer, um einen Pool mit Computeknoten zum Ausführen Ihrer Workload zu erstellen.

  1. Melden Sie sich mit Ihren Azure-Anmeldeinformationen bei Batch Explorer an.

  2. Wählen Sie Ihr Batch-Konto aus.

  3. Wählen Sie in der linken Randleiste Pools und dann das +-Symbol aus, um einen Pool hinzuzufügen.

    Screenshot of creating a pool in Batch Explorer.

  4. Füllen Sie das Formular zum Hinzufügen eines Pools zum Konto wie folgt aus:

    • Geben Sie unter ID die Zeichenfolge custom-activity-pool ein.
    • Geben Sie unter Dedizierte Knoten den Wert 2 ein.
    • Wählen Sie unter Betriebssystemkonfiguration auswählen die Registerkarte Data Science und dann Dsvm Win 2019 aus.
    • Wählen Sie unter VM-Größe auswählen die Option Standard_F2s_v2 aus.
    • Wählen Sie unter Startaufgabe die Option Startaufgabe hinzufügen aus. Geben Sie auf dem Bildschirm der Startaufgabe unter Befehlszeile den Befehl cmd /c "pip install azure-storage-blob pandas" ein, und wählen Sie dann Auswählen aus. Mit diesem Befehl wird das Paket azure-storage-blob auf jedem Knoten beim Starten installiert.
  5. Klicken Sie auf Speichern und schließen.

Verwenden von Storage-Explorer zum Erstellen eines Blobcontainers

Verwenden Sie Storage-Explorer, um Blobcontainer zum Speichern von Eingabe- und Ausgabedateien zu erstellen und dann Ihre Eingabedateien hochzuladen.

  1. Melden Sie sich mit Ihren Azure-Anmeldeinformationen bei Storage-Explorer an.
  2. Suchen und erweitern Sie in der linken Randleiste das Speicherkonto, das mit Ihrem Batch-Konto verknüpft ist.
  3. Klicken Sie mit der rechten Maustaste auf Blobcontainer, und wählen Sie Blobcontainer erstellen aus, oder wählen Sie unter Aktionen unten in der Randleiste die Option Blobcontainer erstellen aus.
  4. Geben Sie input in das Eingabefeld ein.
  5. Erstellen Sie einen weiteren Blobcontainer mit dem Namen output.
  6. Wählen Sie den Container input und dann im rechten Bereich Upload>Dateien hochladen aus.
  7. Wählen Sie auf dem Bildschirm Dateien hochladen unter Ausgewählte Dateien die Auslassungspunkte ... neben dem Eingabefeld aus.
  8. Navigieren Sie zum Speicherort der heruntergeladenen iris.csv-Datei, wählen Sie Öffnen und dann Hochladen aus.

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

Entwickeln eines Python-Skripts

Das folgende Python-Skript lädt die Datasetdatei iris.csv aus Ihrem Storage-Explorer-Eingabecontainer (input), bearbeitet die Daten und speichert die Ergebnisse im Ausgabecontainer (output).

Das Skript muss die Verbindungszeichenfolge für das mit Ihrem Batch-Konto verknüpfte Azure Storage-Konto verwenden. So rufen Sie die Verbindungszeichenfolge ab:

  1. Suchen Sie im Azure-Portal nach dem Namen des Speicherkontos, das mit Ihrem Batch-Konto verknüpft ist, und wählen Sie diesen aus.
  2. Wählen Sie auf der Seite für das Speicherkonto im linken Navigationsbereich unter Sicherheit + Netzwerkdie Option Zugriffsschlüssel aus.
  3. Wählen Sie unter key1 die Option Anzeigen neben Verbindungszeichenfolge und dann das Symbol Kopieren aus, um die Verbindungszeichenfolge zu kopieren.

Fügen Sie die Verbindungszeichenfolge in das folgende Skript ein, und ersetzen Sie den Platzhalter <storage-account-connection-string>. Speichern Sie das Skript als Datei mit dem Namen main.py.

Wichtig

Das Verfügbarmachen von Kontoschlüsseln in der App-Quelle wird für die Produktionsnutzung nicht empfohlen. Sie sollten den Zugriff auf Anmeldeinformationen einschränken und in Ihrem Code über Variablen oder eine Konfigurationsdatei darauf verweisen. Es empfiehlt sich, Batch- und Storage-Kontoschlüssel in Azure Key Vault zu speichern.

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

Führen Sie das Skript lokal aus, um die Funktionalität zu testen und zu überprüfen.

python main.py

Das Skript sollte eine Ausgabedatei namens iris_setosa.csv erstellen, die nur die Datensätze mit „Species = setosa“ enthält. Nachdem Sie sich von der ordnungsgemäßen Funktion vergewissert haben, laden Sie die Skriptdatei main.py in Ihren Storage-Explorer-Eingabecontainer (input) hoch.

Einrichten einer Data Factory-Pipeline

Erstellen und überprüfen Sie eine Data Factory-Pipeline, die Ihr Python-Skript verwendet.

Abrufen von Kontoinformationen

Die Data Factory-Pipeline verwendet Ihre Batch- und Storage-Kontonamen, Ihre Kontoschlüsselwerte und Ihren Batch-Kontoendpunkt. Diese Informationen finden Sie im Azure-Portal:

  1. Suchen Sie in der Azure Search-Leiste nach dem Namen Ihres Batch-Kontos, und wählen Sie ihn aus.

  2. Wählen Sie auf der Seite Ihres Batch-Kontos im linken Navigationsbereich die Option Schlüssel aus.

  3. Kopieren Sie auf der Seite Schlüssel die folgenden Werte:

    • Batch-Konto
    • Kontoendpunkt
    • Primärer Zugriffsschlüssel
    • Speicherkontoname
    • Key1

Erstellen und Ausführen der Pipeline

  1. Wenn Azure Data Factory Studio noch nicht ausgeführt wird, wählen Sie Studio starten auf der Data Factory-Seite im Azure-Portal aus.

  2. Wählen Sie in Data Factory Studio im linken Navigationsbereich das Stiftsymbol Autor aus.

  3. Wählen Sie unter Factoryressourcen das +-Symbol und dann Pipeline aus.

  4. Ändern Sie im Bereich Eigenschaften auf der rechten Seite den Namen der Pipeline in Python ausführen.

    Screenshot of Data Factory Studio after you select Add pipeline.

  5. Erweitern Sie im Bereich Aktivitäten die Option Batch-Dienst, und ziehen Sie die Aktivität Benutzerdefiniert auf die Oberfläche des Pipeline-Designers.

  6. Geben Sie unter dem Designer-Canvas auf der Registerkarte Allgemein unter Name die Zeichenfolge testPipeline ein.

    Screenshot of the General tab for creating a pipeline task.

  7. Wählen Sie die Registerkarte Azure Batch und dann Neu aus.

  8. Füllen Sie das Formular Neuer verknüpfter Dienst wie folgt aus:

    • Name: Geben Sie einen Namen für den verknüpften Dienst ein, z. B. AzureBatch1.
    • Zugriffsschlüssel: Geben Sie den primären Zugriffsschlüssel ein, den Sie aus Ihrem Batch-Konto kopiert haben.
    • Kontoname: Geben Sie den Namen Ihres Batch-Kontos ein.
    • Batch-URL: Geben Sie den Kontoendpunkt ein, den Sie aus Ihrem Batch-Konto kopiert haben, z. B https://batchdotnet.eastus.batch.azure.com.
    • Poolname: Geben Sie den in Batch Explorer erstellten Pool custom-activity-pool ein.
    • Name des verknüpften Speicherkontodiensts: Wählen Sie Neu aus. Geben Sie auf dem nächsten Bildschirm einen Namen für den verknüpften Speicherdienst ein, z. B. AzureBlobStorage1, wählen Sie Ihr Azure-Abonnement und ihr verknüpftes Speicherkonto aus, und wählen Sie dann Erstellen aus.
  9. Wählen Sie unten im Batch-Bildschirm Neuer verknüpfter Dienst die Option Verbindung testen aus. Wenn die Verbindung erfolgreich ist, wählen Sie Erstellen aus.

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

  10. Wählen Sie die Registerkarte Einstellungen aus, und geben Sie die folgenden Einstellungen ein, bzw. wählen Sie sie aus:

    • Befehl: Geben Sie cmd /C python main.py ein.
    • Verknüpfter Ressourcendienst: Wählen Sie den von Ihnen erstellten verknüpften Speicherdienst aus, z. B. AzureBlobStorage1, und testen Sie die Verbindung, um sicherzustellen, dass sie erfolgreich ist.
    • Ordnerpfad: Wählen Sie das Ordnersymbol, dann den Eingabecontainer (input) und anschließend OK aus. Die Dateien aus diesem Ordner werden aus dem Container auf die Poolknoten heruntergeladen, bevor das Python-Skript ausgeführt wird.

    Screenshot of the Settings tab for the Batch job.

  11. Wählen Sie auf der Symbolleiste der Pipeline die Option Überprüfen zum Überprüfen der Pipeline aus.

  12. Wählen Sie Debuggen aus, um die Pipeline zu testen und sicherzustellen, dass sie richtig funktioniert.

  13. Klicken Sie auf Alle veröffentlichen, um die Pipeline zu veröffentlichen.

  14. Wählen Sie Trigger hinzufügen und dann Jetzt auslösen aus, um die Pipeline auszuführen, oder Neu/Bearbeiten, um sie zu planen.

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

Verwenden von Batch Explorer zum Anzeigen von Protokolldateien

Wenn die Ausführung Ihrer Pipeline Warnungen oder Fehler erzeugt, können Sie Batch Explorer verwenden, um sich die Ausgabedateien stdout.txt und stderr.txt anzusehen und weitere Informationen zu erhalten.

  1. Wählen Sie in Batch Explorer in der linken Randleiste die Option Aufträge aus.
  2. Wählen Sie den Auftrag adfv2-custom-activity-pool aus.
  3. Wählen Sie die Aufgabe aus, die über einen Fehlerexitcode verfügt.
  4. Zeigen Sie die Dateien stdout.txt und stderr.txt an, um Ihr Problem zu untersuchen und zu diagnostizieren.

Bereinigen von Ressourcen

Batch-Konten, -Aufträge und -Aufgaben sind kostenlos, aber für Computeknoten fallen Gebühren an, auch wenn sie keine Aufträge ausführen. Es ist am besten, Knotenpools nur bei Bedarf zuzuweisen und die Pools zu löschen, wenn Sie sie nicht mehr benötigen. Beim Löschen von Pools werden alle Aufgabenausgaben auf den Knoten und die Knoten selbst gelöscht.

Die Eingabe- und Ausgabedateien verbleiben im Speicherkonto, und es können Gebühren anfallen. Wenn Sie die Dateien nicht mehr benötigen, können Sie die Dateien oder Container löschen. Wenn Sie Ihr Batch-Konto oder das verknüpfte Speicherkonto nicht mehr benötigen, können Sie es löschen.

Nächste Schritte

In diesem Tutorial haben Sie erfahren, wie Sie ein Python-Skript mit Batch Explorer, Storage-Explorer und Data Factory verwenden, um eine Batch-Workload auszuführen. Weitere Informationen zu Data Factory finden Sie unter Was ist Azure Data Factory?