Freigeben über


Transformieren von Daten durch Ausführen eines Synapse-Notebooks

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Tipp

Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!

Die Aktivität von Azure Synapse-Notebooks in einer Synapse-Pipeline führt ein Synapse-Notebook aus. Dieser Artikel baut auf dem Artikel zu Datentransformationsaktivitäten auf, der eine allgemeine Übersicht über die Datentransformation und die unterstützten Transformationsaktivitäten bietet.

Erstellen einer Synapse-Notebookaktivität

Sie können eine Synapse-Notebookaktivität direkt aus der Synapse-Pipeline-Oberfläche oder aus dem Notebook-Editor heraus erstellen. Die Synapse-Notebookaktivität wird im Spark-Pool ausgeführt, der im Synapse-Notebook ausgewählt wird.

Hinzufügen einer Synapse-Notebook-Aktivität über eine Pipelinecanvas

Ziehen Sie das Synapse-Notebook aus dem Aktivitätsbereich auf die Synapse-Pipeline-Leinwand. Wählen Sie das Feld für Synapse-Notebookaktivitäten aus, und konfigurieren Sie die Einstellungen der Notebookinhalte für die aktuelle Aktivität. Sie können ein vorhandenes Notebook aus dem aktuellen Arbeitsbereich auswählen oder ein neues hinzufügen.

Wenn Sie im aktuellen Arbeitsbereich ein vorhandenes Notebook auswählen, können Sie auf die Schaltfläche Öffnen klicken, um die Seite des Notebooks direkt zu öffnen.

(Optional) Sie können auch den Spark-Pool, die Executor-Größe, das dynamische Zuweisen von Exekutoren, die minimalen und maximalen Exekutoren, die Treibergröße und die Authentifizierung in den Einstellungen neu konfigurieren. Es sollte beachtet werden, dass die hier konfigurierten Einstellungen die Einstellungen der Konfigurationssitzung in Notebook ersetzen. Wenn in den Einstellungen der aktuellen Notebook-Aktivität nichts festgelegt ist, wird sie mit den Einstellungen der Konfigurationssitzung in diesem Notebook ausgeführt.

screenshot-showing-create-notebook-activity

Eigenschaft Beschreibung Erforderlich
Spark-Pool Verweis auf den Spark-Pool. Sie können den Apache Spark-Pool aus der Liste auswählen. Wenn diese Einstellung leer ist, erfolgt die Ausführung im Spark-Pool des Notebooks selbst. Nein
Executorgröße Die Anzahl von Kernen und die Menge an Arbeitsspeicher, die im angegebenen Apache Spark-Pool für die Sitzung zur Verwendung durch Executors zugeordnet ist. Nein
Executors dynamisch zuordnen Diese Einstellung entspricht der dynamischen Zuordnungseigenschaft in der Spark-Konfiguration für die Executorzuteilung der Spark-Anwendung. Nein
Min. Executors Dies ist die min. Anzahl von Executors, die im angegebenen Spark-Pool für den Auftrag zugeordnet werden sollen. Nein
Max. Executors Maximale Anzahl von Executors, die im angegebenen Spark-Pool für die Aufgabe zugeteilt werden können. Nein
Treibergröße Die Anzahl von Kernen und die Menge an Arbeitsspeicher, die für Treiber im angegebenen Apache Spark-Pool für den Auftrag verwendet werden sollen. Nein
Authentifizierung Kann mithilfe einer vom System zugewiesenen verwalteten Identität oder einer vom Benutzer zugewiesenen verwalteten Identität authentifiziert werden. Nein

Hinweis

Die Ausführung paralleler Spark-Notebooks in Azure Synapse-Pipelines wird in die Warteschlange eingereiht und nach dem FIFO-Prinzip ausgeführt. Die Auftragsreihenfolge in der Warteschlange erfolgt gemäß der Zeitabfolge, und die Ablaufzeit eines Auftrags in der Warteschlange beträgt drei Tage. Beachten Sie, dass die Warteschlange für Notebooks nur in der Synapse-Pipeline funktioniert.

Hinzufügen eines Notebooks zur Synapse-Pipeline

Wählen Sie in der oberen rechten Ecke Zur Pipeline hinzufügen aus, um ein Notebook zu einer vorhandenen Pipeline hinzuzufügen oder eine neue Pipeline zu erstellen.

Screenshot, der zeigt: Notebook zur Pipeline hinzufügen

Übergeben von Parametern

Festlegen einer Parameterzelle

Um Ihr Notebook zu parametrisieren, wählen Sie die Auslassungspunkte (...) aus, um auf der Zellensymbolleiste auf Weitere Befehle zuzugreifen. Klicken Sie dann auf Parameterzelle umschalten, um die Zelle als Parameterzelle festzulegen.

Screenshot, der den Azure-Notebook-Umschalter-Parameter zeigt

Definieren Sie Ihre Parameter in dieser Zelle. Es kann etwas so einfaches sein wie:

a = 1
b = 3
c = "Default Value"

Sie können auf diese Parameter in anderen Zellen verweisen und im Notizbuch die Standardwerte verwenden, die Sie in der Parameterzelle angegeben haben.

Wenn Sie dieses Notizbuch aus einer Pipeline ausführen, sucht Azure Data Factory nach der Parameterzelle und verwendet die Werte, die Sie als Standardwerte für die Parameter angegeben haben, die zur Ausführungszeit übergeben werden. Wenn Sie Parameterwerte aus einer Pipeline zuweisen, fügt das Ausführungsmodul eine neue Zelle unterhalb der Parameterzelle mit Eingabeparametern hinzu, um die Standardwerte zu überschreiben.

Zuweisen von Parameterwerten über eine Pipeline

Sobald Sie ein Notebook mit Parametern erstellt haben, können Sie dieses über eine Pipeline mit der Synapse-Notebookaktivität ausführen. Nachdem Sie die Aktivität zu Ihrer Pipelinecanvas hinzugefügt haben, können Sie die Parameterwerte auf der Registerkarte Einstellungen im Abschnitt Base parameters (Basisparameter) festlegen.

screenshot-showing-assign-a-parameter

Tipp

Data Factory füllt die Parameter nicht automatisch auf. Sie müssen diese manuell hinzufügen. Achten Sie darauf, dass Sie in der Parameterzelle im Notizbuch und im Basisparameter in der Pipeline genau denselben Namen verwenden.

Nachdem Sie Ihre Parameter zu Ihrer Aktivität hinzugefügt haben, übergibt Data Factory die Werte, die Sie in Ihrer Aktivität angeben, an Ihr Notizbuch, und Ihr Notizbuch wird dann mit diesen neuen Parameterwerten ausgeführt, anstelle der Standardwerte, die Sie in der Parameterzelle angegeben haben.

Beim Zuweisen von Parameterwerten können Sie die Pipelineausdruckssprache oder Systemvariablen verwenden.

Ausgabewert einer Synapse-Notebookzelle lesen

Sie können den Ausgabewert der Notebookzelle in den nächsten Aktivitäten folgendermaßen lesen:

  1. Rufen Sie die API mssparkutils.notebook.exit in Ihrer Synapse-Notebookaktivität auf, um den Wert zurückzugeben, den Sie in der Aktivitätsausgabe anzeigen möchten, zum Beispiel:

    mssparkutils.notebook.exit("hello world") 
    

    Wenn Sie den Notebook-Inhalt speichern und die Pipeline erneut auslösen, enthält die Ausgabe für die Notebook-Aktivität den exitValue-Wert, der für die folgenden Aktivitäten in Schritt 2 verwendet werden kann.

  2. Lesen Sie die Eigenschaft exitValue aus der Ausgabe der Notebookaktivität. Mit diesem Beispielausdruck können Sie überprüfen, ob der von der Ausgabe der Notebook-Aktivität abgerufene Wert für exitValue der Zeichenfolge „hello world“ entspricht:

    screenshot-showing-read-exit-value

Ausführen eines weiteren Synapse-Notebooks

Sie können in einer Synapse-Notebookaktivität auf andere Notebooks verweisen, indem Sie %run magic oder die Notebook-Hilfsprogramme mssparkutils aufrufen. Beide unterstützen geschachtelte Funktionsaufrufe. Berücksichtigen Sie je nach Szenario die folgenden wichtigen Unterschiede zwischen diesen beiden Methoden:

  • %run magic kopiert alle Zellen aus dem Notebook, auf das verwiesen wird, in die Zelle %run und teilt den Variablenkontext. Wenn notebook1 über %run notebook2 auf notebook2 verweist und notebook2 die Funktion mssparkutils.notebook.exit aufruft, wird die Zellenausführung in notebook1 beendet. Sie sollten %run magic verwenden, wenn Sie eine Notebookdatei einschließen möchten.
  • Die mssparkutils Notebook-Hilfsprogramme rufen das referenzierte Notebook als Methode oder Funktion auf. Der Variablenkontext wird nicht geteilt. Wenn notebook1 über mssparkutils.notebook.run("notebook2") auf notebook2 verweist und notebook2 die Funktion mssparkutils.notebook.exit aufruft, wird die Zellenausführung in notebook1 fortgesetzt. Sie sollten die Notebook-Hilfsprogramme mssparkutils verwenden, wenn Sie ein Notebook importieren möchten.

Anzeigen des Ausführungsverlaufs für Notebook-Aktivitäten

Gehen Sie unter der Registerkarte Überwachen zu Pipeline-Ausführungen. Dort sehen Sie die Pipeline, die Sie ausgelöst haben. Öffnen Sie die Pipeline, die Notebookaktivitäten enthält, um den Ausführungsverlauf anzuzeigen.

Wählen Sie die Schaltfläche Notebook öffnen aus, um die Momentaufnahme der letzten Notebook-Ausführung anzuzeigen, die auch Zelleneingaben und -ausgaben enthält.

Screenshot: Verlauf der Notebook-Aktivitäten

Öffnen Sie die Momentaufnahme eines Notebooks:

Screenshot, das eine Momentaufnahme eines geöffneten Notebooks zeigt.

Wählen Sie die Schaltfläche Eingabe oder Ausgabe aus, um die Eingaben oder Ausgaben der Notebookaktivität anzuzeigen. Wenn in Ihrer Pipeline ein Benutzerfehler aufgetreten ist, wählen Sie die Ausgabe aus, um das Feld Ergebnis zu überprüfen und eine ausführliche Rückverfolgung des Benutzerfehlers anzuzeigen.

Screenshot: Details des Benutzerfehlers

Definition der Synapse-Notebook-Aktivität

Hier finden Sie eine JSON-Beispieldefinition für eine Synapse-Notebookaktivität:

{
    "name": "parameter_test",
    "type": "SynapseNotebook",
    "dependsOn": [],
    "policy": {
        "timeout": "7.00:00:00",
        "retry": 0,
        "retryIntervalInSeconds": 30,
        "secureOutput": false,
        "secureInput": false
    },
    "userProperties": [],
    "typeProperties": {
        "notebook": {
            "referenceName": "parameter_test",
            "type": "NotebookReference"
        },
        "parameters": {
            "input": {
                "value": {
                    "value": "@pipeline().parameters.input",
                    "type": "Expression"
                }
            }
        }
    }
}

Ausgabe der Synapse-Notebook-Aktivität

Hier finden Sie ein JSON-Beispiel für die Ausgabe einer Synapse-Notebookaktivität:

{
{
    "status": {
        "Status": 1,
        "Output": {
            "status": <livySessionInfo>
            },
            "result": {
                "runId": "<GUID>",
                "runStatus": "Succeed",
                "message": "Notebook execution is in Succeeded state",
                "lastCheckedOn": "2021-03-23T00:40:10.6033333Z",
                "errors": {
                    "ename": "",
                    "evalue": ""
                },
                "sessionId": 4,
                "sparkpool": "sparkpool",
                "snapshotUrl": "https://myworkspace.dev.azuresynapse.net/notebooksnapshot/{guid}",
                "exitCode": "abc" // return value from user notebook via mssparkutils.notebook.exit("abc")
            }
        },
        "Error": null,
        "ExecutionDetails": {}
    },

    "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (West US 2)",
    "executionDuration": 234,
    "durationInQueue": {
        "integrationRuntimeQueue": 0
    },
    "billingReference": {
        "activityType": "ExternalActivity",
        "billableDuration": [
            {
                "meterType": "AzureIR",
                "duration": 0.06666666666666667,
                "unit": "Hours"
            }
        ]
    }
}

Bekannte Probleme

Wenn der Notebookname in der Pipeline-Notebook-Aktivität parametrisiert ist, kann in den Debugausführungen nicht auf die Notebookversion im nicht veröffentlichten Status verwiesen werden.