Transformer des données en exécutant un notebook Synapse

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

L’activité du notebook Azure Synapse dans un pipeline Synapse exécute un notebook Synapse. Cet article s'appuie sur l'article Activités de transformation des données qui présente une vue d'ensemble de la transformation des données et les activités de transformation prises en charge. 

Créer une activité de notebook Synapse

Vous pouvez créer une activité de bloc-notes Synapse directement à partir du canevas de pipeline Synapse ou de l’éditeur de bloc-notes. L’activité de bloc-notes Synapse s’exécute sur le pool Spark qui est choisi dans le bloc-notes Synapse.

Ajouter une activité de bloc-notes Synapse à partir du canevas de pipeline

Glisser-déplacer un bloc-notes Synapse sous Activités dans le canevas de pipeline Synapse. Sélectionnez dans la zone activité du bloc-notes Synapse et configurez le contenu du bloc-notes pour l’activité en cours dans les paramètres. Vous pouvez sélectionner un bloc-notes existant à partir de l’espace de travail actuel ou en ajouter un nouveau.

Si vous sélectionnez un notebook existant dans l’espace de travail actuel, vous pouvez cliquer sur le bouton Ouvrir pour ouvrir directement la page du notebook.

(Facultatif) Vous pouvez également reconfigurer Pool Spark\Taille de l’exécuteur\Allouer dynamiquement des exécuteurs\Nombre minimal d’exécuteurs\Nombre maximal d’exécuteurs\Taille du pilote dans les paramètres. Notez que les paramètres reconfigurés ici remplacent les paramètres de la session de configuration dans le Notebook. Si les paramètres de l’activité actuelle du notebook ne sont pas définis, il s’exécute avec les paramètres de la session de configuration dans ce notebook.

capture d’écran-présentation-créer-bloc-notes-activité

Propriété Description Obligatoire
Pool Spark Référence au pool Spark. Vous pouvez sélectionner un pool Apache Spark dans la liste. Si ce paramètre est vide, il s’exécute dans le pool Spark du notebook lui-même. Non
Taille de l’exécuteur Nombre de cœurs et mémoire à utiliser pour les exécuteurs alloués dans le pool Apache Spark spécifié pour la session. Non
Allouer dynamiquement des exécuteurs Ce paramètre correspond à la propriété d’allocation dynamique dans la configuration Spark pour allouer des exécuteurs d’application Spark. Non
Nombre minimal d’exécuteurs Nombre minimal d'exécuteurs à allouer dans le pool Spark spécifié pour le travail. Non
Nombre maximal d’exécuteurs Nombre maximal d'exécuteurs à allouer dans le pool Spark spécifié pour le travail. Non
Taille du pilote Nombre de cœurs et mémoire à utiliser pour le pilote dans le pool Apache Spark spécifié du travail. Non

Notes

L’exécution de blocs-notes Spark parallèles dans les pipelines Azure Synapse est mise en file d’attente et exécutée de manière FIFO, l’ordre des travaux dans la file d’attente est défini en fonction de la séquence temporelle, le délai d’expiration d’un travail dans la file d’attente est de 3 jours. Notez que la file d’attente pour les bloc-notes fonctionne uniquement dans un pipeline Synapse.

Ajouter un bloc-notes à un pipeline Synapse

Sélectionnez le bouton Ajouter au pipeline dans le coin supérieur droit pour ajouter un notebook à un pipeline existant ou créer un pipeline.

capture d’écran-présentation-ajouter-bloc-notes-à-pipeline

Passage de paramètres

Désigner une cellule de paramètres

Pour paramétrer votre notebook, sélectionnez le bouton de sélection (…) pour accéder au menu Plus de commandes au niveau de la barre d’outils de la cellule. Sélectionnez ensuite Activer/désactiver la cellule Paramètres pour désigner la cellule comme cellule de paramètre.

capture d’écran-présentation-azure-bloc-notes-basculer-paramètre

Azure Data Factory recherche la cellule de paramètre et la traite comme cellule par défaut pour les paramètres transmis au moment de l’exécution. Le moteur d’exécution ajoutera une nouvelle cellule sous la cellule des paramètres avec des paramètres d’entrée en vue de remplacer les valeurs par défaut.

Attribuer des valeurs de paramètres à partir d’un pipeline

Une fois que vous avez créé un bloc-notes avec les paramètres, vous pouvez l’exécuter depuis un pipeline à l’aide de l’activité de bloc-notes Synapse. Après avoir ajouté l’activité à votre canevas de pipeline, vous serez en mesure de définir les valeurs des paramètres dans la section Paramètres de base de l’onglet Paramètres.

capture d’écran-présentation-affecter-un-paramètre

Lors de l’attribution des valeurs de paramètre, vous pouvez utiliser le langage d’expression du pipeline ou des variables système.

Lire la valeur de sortie de la cellule du bloc-notes Synapse

Vous pouvez lire la valeur de sortie de la cellule du bloc-notes dans les activités suivantes en suivant les étapes ci-dessous :

  1. Appelez l’API mssparkutils.notebook.exit dans votre activité de bloc-notes Synapse pour retourner la valeur que vous souhaitez afficher dans la sortie de l’activité, par exemple :

    mssparkutils.notebook.exit("hello world") 
    

    En enregistrant le contenu du bloc-notes et en redéclenchant le pipeline, la sortie de l’activité du bloc-notes contient les exitValue qui peuvent être utilisés pour les activités suivantes à l’étape 2.

  2. Lit la propriété exitValue de la sortie de l’activité du bloc-notes. Voici un exemple d’expression qui est utilisé pour vérifier si le exitValue extrait de la sortie d’activité du bloc-notes est égal à « Hello World » :

    capture d’écran-présentation-lire-sortie-valeur

Exécuter un autre bloc-notes Synapse

Vous pouvez référencer d’autres bloc-notes dans une activité de bloc-notes Synapse en appelant %run magic ou les utilitaires de bloc-notes mssparkutils. Les deux prennent en charge l’imbrication des appels de fonction. Les principales différences entre ces deux méthodes que vous devez prendre en compte en fonction de votre scénario sont les suivantes :

  • %run magic copie toutes les cellules du bloc-notes référencé dans la cellule %run et partage le contexte de la variable. Lorsque notebook1 fait référence notebook2 via %run notebook2 et que notebook2 appelle une fonction mssparkutils.notebook.exit, l’exécution de la cellule dans notebook1 cesse. Nous vous recommandons d’utiliser %run magic quand vous souhaitez « inclure » un fichier de bloc-notes.
  • Les utilitaires de bloc-notes mssparkutils appellent le bloc-notes référencé comme une méthode ou une fonction. Le contexte de la variable n’est pas partagé. Lorsque notebook1 fait référence notebook2 via mssparkutils.notebook.run("notebook2") et que notebook2 appelle une fonction mssparkutils.notebook.exit, l’exécution de la cellule dans notebook1 se poursuit. Nous vous recommandons d’utiliser les utilitaires de bloc-notes mssparkutils lorsque vous souhaitez « importer » un bloc-notes.

Consulter l’historique des exécutions d’activité du bloc-notes

Consultez Exécutions de pipeline sous l’onglet Surveillance, vous visualiserez le pipeline que vous avez déclenché. Ouvrez le pipeline qui contient l’activité du bloc-notes pour afficher l’historique des exécutions.

Vous pouvez visualiser la dernière capture instantanée d’exécution de bloc-notes, y compris les deux cellules d’entrée et de sortie en sélectionnant le bouton ouvrir le bloc-notes.

Capture d’écran montrant l’historique de l’activité du notebook.

Ouvrez un instantané du notebook :

Capture d’écran montrant un instantané du notebook ouvert.

Vous pouvez visualiser les entrées ou les sorties de l’activité du bloc-notes en sélectionnant le bouton entrées ou sorties. Si votre pipeline échoue avec une erreur utilisateur, sélectionnez les sorties pour vérifier le champs résultats et visualiser le traceback détaillé des erreurs de l’utilisateur.

Capture d’écran montrant les détails de l’erreur de l’utilisateur.

Définition de l’activité de bloc-notes Synapse

Voici l’exemple de définition JSON d’une activité de bloc-notes Synapse :

{
    "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"
                }
            }
        }
    }
}

Sortie d’activité de bloc-notes Synapse

Voici l’exemple de code JSON d’une sortie d’activité de bloc-notes Synapse :

{
{
    "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"
            }
        ]
    }
}

Problèmes connus

Si le nom du notebook est paramétré dans l’activité Notebook de pipeline, la version du notebook dans l’état non publié ne peut pas être référencée dans les exécutions de débogage.