Créer, exécuter et gérer des travaux Azure Databricks

Un travail est un moyen d’exécuter du code non interactif dans un cluster Azure Databricks. Par exemple, vous pouvez exécuter une charge de travail Extraction, transformation et chargement (ETL) de manière interactive ou selon une planification. Vous pouvez également exécuter des travaux de manière interactive dans l'interface utilisateur du notebook.

Vous pouvez créer et exécuter un travail à l’aide de l’interface utilisateur, de l’interface CLI ou en appelant l’API Travaux. Vous pouvez réparer et réexécuter un travail en échec ou annulé en utilisant l’interface utilisateur ou l’API. Vous pouvez superviser les résultats de l’exécution du travail à l’aide de l’interface utilisateur, de l’interface CLI, de l’API et des notifications (par exemple e-mail, destination webhook ou notifications Slack). Cet article analyse le fonctionnement des tâches de travail avec l’interface utilisateur. Pour les autres méthodes, consultez l’interface CLI des travaux et l’API Travaux 2.1.

Votre travail peut être constitué d’une seule tâche ou être un grand workflow multitâche avec des dépendances complexes. Azure Databricks gère l’orchestration des tâches, la gestion des clusters, la surveillance et les rapports d’erreurs pour tous vos travaux. Vous pouvez exécuter vos travaux tout de suite ou à intervalles réguliers via un système de planification facile à utiliser.

Vous pouvez implémenter une tâche dans un fichier JAR, un notebook Azure Databricks, un pipeline Delta Live Tables, ou une application écrite en Scala, Java ou Python. Les applications Spark Submit héritées sont également prises en charge. Vous contrôlez l’ordre d’exécution des tâches en spécifiant des dépendances entre les tâches. Vous pouvez configurer les tâches pour qu’elles s’exécutent de façon séquentielle ou parallèle. Le schéma suivant illustre un workflow qui :

  1. Ingère les données de parcours brutes et traite afin de gérer les sessions des enregistrements.

  2. Ingère les données de commande et les joint aux données de parcours de sessions pour créer un jeu de données préparé pour l’analyse.

  3. Extrait les fonctionnalités des données préparées.

  4. Effectue les tâches en parallèle pour maintenir les fonctionnalités et effectuer l’apprentissage d’un modèle de Machine Learning.

    Exemple de workflow multitâche

Pour créer votre premier workflow avec un travail Azure Databricks, consultez le guide de démarrage rapide.

Important

  • Vous pouvez créer des travaux uniquement dans un espace de travail Science des données & Ingénierie ou un espace de travail Machine Learning.
  • Un espace de travail est limité à 1 000 exécutions de travaux simultanées. Une réponse 429 Too Many Requests est retournée lorsque vous demandez une exécution qui ne peut pas démarrer immédiatement.
  • Le nombre de travaux qu’un espace de travail peut créer en une heure est limité à 10 000 (« envoi d’exécutions » inclus). Cette limite affecte également les travaux créés par les workflows de l’API REST et des notebooks.

Créer un travail

  1. Effectuez l’une des opérations suivantes :

    • Cliquez sur Icône TravauxWorkflows dans la barre latérale et cliquez sur Bouton Créer un travail.
    • Dans la barre latérale, cliquez sur Nouvelle icôneNouveau et sélectionnez Tâche.

    L’onglet Tâches apparaît avec la boîte de dialogue de création de tâche.

    Écran Créer une tâche

  2. Remplacez Add a name for your job... par le nom de votre travail.

  3. Dans le champ Nom de la tâche, entrez un nom pour la tâche.

  4. Dans le menu déroulant Type, sélectionnez le type de tâche à exécuter.

    • Notebook : dans la liste déroulante Source, sélectionnez un emplacement pour le notebook. C’est-à-dire un espace de travail pour un notebook situé dans un dossier d’espace de travail Azure Databricks ou un fournisseur Git pour un notebook situé dans un référentiel Git distant.

      Espace de travail  : utilisez l’Explorateur de fichiers pour rechercher le notebook, cliquez sur le nom du notebook, puis cliquez sur Confirmer.

      Fournisseur Git : cliquez sur Modifier et entrez les informations du référentiel Git. Consultez Utiliser des notebooks avec gestion de versions dans un travail Azure Databricks.

    • JAR : spécifiez la Classe principale. Utilisez le nom complet de la classe contenant la méthode main, par exemple org.apache.spark.examples.SparkPi. Cliquez ensuite sur Ajouter sous Dependent Libraries (Bibliothèques dépendantes) pour ajouter les bibliothèques nécessaires à l’exécution de la tâche. L’une de ces bibliothèques doit contenir la classe principale.

      Pour en savoir plus sur les tâches JAR, consultez Travaux JAR.

    • Spark Submit : dans la zone de texte Paramètres, spécifiez la classe principale, le chemin d’accès à la bibliothèque JAR et tous les arguments, mis en forme en tant que tableau de chaînes JSON. L’exemple suivant configure une tâche spark-submit pour qu’elle exécute DFSReadWriteTest à partir des exemples Apache Spark :

      ["--class","org.apache.spark.examples.DFSReadWriteTest","dbfs:/FileStore/libraries/spark_examples_2_12_3_1_1.jar","/dbfs/databricks-datasets/README.md","/FileStore/examples/output/"]
      

      Important

      Il existe plusieurs limitations pour les tâches spark-submit :

      • Vous pouvez exécuter des tâches spark-submit uniquement sur les nouveaux clusters.
      • Spark-submit ne prend pas en charge la mise à l’échelle automatique du cluster. Pour en savoir plus sur la mise à l’échelle automatique, consultez Mise à l’échelle automatique du cluster.
      • Spark-submit ne prend pas en charge Databricks Utilities. Pour utiliser Databricks Utilities, utilisez des tâches JAR à la place.
      • Si vous utilisez un cluster Unity Catalog, spark-submit est pris en charge uniquement si le cluster utilise le mode d’accès mono-utilisateur. Le mode d’accès partagé n’est pas pris en charge.
    • Script Python: dans la liste déroulante Source, sélectionnez un emplacement pour le script Python. C’est-à-dire un espace de travail pour un script dans l’espace de travail local ou DBFS pour un script situé sur DBFS ou un stockage cloud. Dans la zone de texte Chemin d’accès, entrez le chemin d’accès au script Python :

      Espace de travail: dans la boîte de dialogue Sélectionner un fichier Python, accédez au script Python, puis cliquez sur Confirmer. Votre script doit se trouver dans un dépôt Databricks.

      DBFS: entrez l’URI d’un script Python sur DBFS ou sur le stockage cloud. par exemple, dbfs:/FileStore/myscript.py.

    • Pipeline Delta Live Tables: dans le menu déroulant Pipeline, sélectionnez un pipeline Delta Live Tables existant.

      Important

      Vous pouvez utiliser uniquement des pipelines déclenchés avec la tâche Pipeline. Les pipelines continus ne sont pas pris en charge en tant que tâche de travail. Pour en savoir plus sur les pipelines déclenchés et les pipelines continus, consultez Pipelines continus et déclenchés.

    • Python Wheel : dans la zone de texte Nom du package, entrez le package à importer, par exemple myWheel-1.0-py2.py3-none-any.whl. Dans la zone de texte Point d’entrée, entrez la fonction à appeler lors du démarrage de la roue. Cliquez sur Ajouter sous Dependent Libraries (Bibliothèques dépendantes) pour ajouter les bibliothèques nécessaires à l’exécution de la tâche.

    • SQL: dans le menu déroulant Tâches SQL, sélectionnez Requête, Tableau de bordou Alerte.

      Notes

      Requête: dans le menu déroulant Requête SQL, sélectionnez la requête à exécuter lorsque la tâche s’exécute. Dans le menu déroulant Entrepôt SQL, sélectionnez un entrepôt serverless ou pro SQL pour exécuter la tâche.

      Tableau de bord : dans le menu déroulant du tableau de bord SQL, sélectionnez un tableau de bord à mettre à jour lorsque la tâche s’exécute. Dans le menu déroulant Entrepôt SQL, sélectionnez un entrepôt serverless ou pro SQL pour exécuter la tâche.

      Alerte: dans le menu déroulant Alerte SQL, sélectionnez une alerte à déclencher pour l’évaluation. Dans le menu déroulant Entrepôt SQL, sélectionnez un entrepôt serverless ou pro SQL pour exécuter la tâche.

    • dbt : consultez Utiliser dbt dans un travail Azure Databricks pour obtenir un exemple détaillé de configuration d’une tâche dbt.

  5. Configurez le cluster sur lequel la tâche s’exécute. Dans la liste déroulante Cluster, sélectionnez Nouveau cluster de travail ou Clusters à usage général existants.

    • Nouveau cluster de travail : cliquez sur Modifier dans la liste déroulante Cluster et terminez la configuration du cluster.
    • Clusters à usage général existants : sélectionnez un cluster existant dans la liste déroulante Cluster. Pour ouvrir le cluster dans une nouvelle page, cliquez sur l’icône Lien externe à droite du nom et de la description du cluster.

    Pour en savoir plus sur la sélection et la configuration de clusters pour exécuter des tâches, consultez les conseils sur la configuration des clusters.

  6. Vous pouvez passer des paramètres pour votre tâche. Chaque type de tâche a des exigences différentes de mise en forme et de passage des paramètres.

    • Notebook : cliquez sur Ajouter et spécifiez la clé et la valeur de chaque paramètre à passer à la tâche. Vous pouvez remplacer ou ajouter des paramètres supplémentaires lorsque vous exécutez manuellement une tâche à l’aide de l’option Exécuter un travail avec des paramètres différents. Les paramètres définissent la valeur du widget du notebook spécifié par la clé du paramètre. Utilisez la section Variables de paramètre de tâche pour passer un ensemble limité de valeurs dynamiques dans le cadre d’une valeur de paramètre.
    • JAR : utilisez un tableau de chaînes au format JSON pour spécifier des paramètres. Ces chaînes sont passées en tant qu’arguments à la méthode main de la classe principale. Consultez Configurer les paramètres d’un travail JAR.
    • Tâche Spark Submit : les paramètres sont spécifiés sous la forme d’un tableau de chaînes au format JSON. Conformément à la convention d'Apache Spark spark-submit, les paramètres après le chemin d’accès JAR sont passés à la méthode main de la classe principale.
    • Script Python : utilisez un tableau de chaînes au format JSON pour spécifier des paramètres. Ces chaînes sont passées en tant qu’arguments qui peuvent être analysés à l’aide du module argparse dans Python.
    • Python Wheel : dans la liste déroulante Paramètres, sélectionnez Arguments positionnels pour entrer des paramètres sous la forme d’un tableau de chaînes au format JSON ou sélectionnez Arguments de mot clé > Ajouter pour entrer la clé et la valeur de chaque paramètre. Les arguments positionnels et de mots clés sont transférés vers la tâche de roue Python en tant qu’arguments de ligne de commande.
  7. Pour accéder à des options supplémentaires, notamment les bibliothèques dépendantes, la stratégie de nouvelles tentatives et les délais d’expiration, cliquez sur Options avancées. Consultez Modifier une tâche.

  8. Cliquez sur Créer.

  9. Si vous souhaitez définir la planification du travail, cliquez sur Modifier la planification dans le volet Détails du travail. Consultez Planifier un travail.

  10. Si vous souhaitez autoriser plusieurs exécutions simultanées du même travail, cliquez sur Edit concurrent runs (Modifier les exécutions simultanées) dans le volet Détails du travail. Consultez Nombre maximal d’exécutions simultanées.

  11. Pour recevoir des notifications d’événements de travail, cliquez sur Modifier les notifications par e-mail ou Modifier les notifications système dans le volet Détails du travail. Consultez Notifications.

  12. Si vous souhaitez contrôler les niveaux d’autorisation sur le travail, cliquez sur Modifier les autorisations dans le volet Détails du travail. Consultez Contrôler l’accès aux travaux.

Pour ajouter une autre tâche, cliquez sur Bouton Ajouter une tâche sous la tâche que vous venez de créer. Une option de cluster partagé est fournie si vous avez configuré un nouveau cluster de travail pour une tâche précédente. Vous pouvez également configurer un cluster pour chaque tâche lorsque vous créez ou modifiez une tâche. Pour en savoir plus sur la sélection et la configuration de clusters pour exécuter des tâches, consultez les conseils sur la configuration des clusters.

Exécuter un travail

  1. Cliquez sur Icône TravauxWorkflows dans la barre latérale.
  2. Sélectionnez un travail, puis cliquez sur l’onglet Exécutions. Vous pouvez exécuter un travail immédiatement ou planifier le travail pour une exécution ultérieure.

Si une ou plusieurs tâches d’un travail avec plusieurs tâches ne réussissent pas, vous pouvez réexécuter le sous-ensemble des tâches qui ont échoué. Consultez Réparer l’exécution d’un travail qui a échoué.

Exécuter un travail immédiatement

Pour exécuter le travail immédiatement, cliquez sur Bouton Exécuter maintenant.

Conseil

Vous pouvez effectuer une série de tests d’un travail avec une tâche de notebook en cliquant sur Exécuter maintenant. Si vous devez apporter des modifications au notebook, cliquez à nouveau sur Exécuter maintenant après avoir modifié le notebook pour exécuter automatiquement la nouvelle version du notebook.

Exécuter un travail avec des paramètres différents

Vous pouvez utiliser Run Now with Different Parameters (Exécuter maintenant avec des paramètres différents) pour réexécuter un travail avec des paramètres différents ou des valeurs différentes pour les paramètres existants.

  1. Cliquez sur Chevron bleu vers le bas en regard de Exécuter maintenant et sélectionnez Run Now with Different Parameters (Exécuter maintenant avec des paramètres différents) ou, dans la table Exécutions actives, cliquez sur Run Now with Different Parameters (Exécuter maintenant avec des paramètres différents). Entrez les nouveaux paramètres en fonction du type de tâche.
    • Notebook : vous pouvez entrer des paramètres en tant que paires clé/valeur ou objet JSON. Les paramètres fournis sont fusionnés avec les paramètres par défaut pour l’exécution déclenchée. Vous pouvez utiliser cette boîte de dialogue pour définir les valeurs des widgets.
    • JAR et spark-submit : vous pouvez entrer une liste de paramètres ou un document JSON. Si vous supprimez des clés, les paramètres par défaut sont utilisés. Vous pouvez également ajouter des variables de paramètre de tâche pour l’exécution.
  2. Cliquez sur Exécuter.

Réparer l’exécution d’un travail qui a échoué

Vous pouvez réparer les travaux multitâches en échec ou annulés en exécutant seulement le sous-ensemble des tâches qui ont échoué et toutes les tâches dépendantes. Comme que les tâches qui ont réussi et toutes les tâches qui en dépendent ne sont pas réexécutées, cette fonctionnalité réduit le temps et les ressources nécessaires à la récupération suite à l’échec des exécutions de travaux.

Vous pouvez modifier les paramètres du travail ou des tâches avant de réparer l’exécution du travail. Les tâches qui échouent sont réexécutées avec les paramètres actuels du travail et des tâches. Par exemple, si vous changez le chemin d’un notebook ou un paramètre du cluster, la tâche est réexécutée avec les paramètres du notebook ou du cluster mis à jour.

Vous pouvez visualiser l’historique de toutes les exécutions de tâches dans la page Détails de l’exécution des tâches.

Notes

  • Si une ou plusieurs tâches partagent un cluster de travaux, une exécution de réparation crée un cluster de travaux ; par exemple, si l’exécution d’origine utilisait le cluster de travaux my_job_cluster, la première exécution de réparation utilise le nouveau cluster de travaux my_job_cluster_v1, ce qui vous permet de voir facilement le cluster et les paramètres du cluster utilisés par l’exécution initiale et toutes les exécutions de réparation. Les paramètres pour my_job_cluster_v1 sont identiques aux paramètres actuels pour my_job_cluster.
  • La réparation est prise en charge seulement avec les travaux qui orchestrent deux tâches ou plus.
  • La valeur Durée affichée dans l’onglet Exécutions représente le temps écoulé entre l’heure de début de la première exécution et l’heure de fin de la dernière exécution de réparation. Par exemple, si une exécution a échoué deux fois et a réussi à la troisième exécution, la durée inclut la durée des trois exécutions.

Pour réparer l’exécution d’un travail qui a échoué :

  1. Cliquez sur Icône TravauxTravaux dans la barre latérale.
  2. Dans la colonne Nom, cliquez sur le nom d’un travail. L’onglet Exécutions montre les exécutions actives et les exécutions terminées, y compris les exécutions qui ont échoué.
  3. Cliquez sur le lien pour l’exécution en échec dans la colonne Heure de début de la table Exécutions terminées (60 derniers jours). La page Détails d’exécution des travaux apparaît.
  4. Cliquez sur Exécution de réparation. La boîte de dialogue Réparer l’exécution du travail s’affiche, listant toutes les tâches en échec et toutes les tâches dépendantes qui seront réexécutées.
  5. Pour ajouter ou modifier des paramètres pour les tâches à réparer, entrez les paramètres dans la boîte de dialogue Réparer l’exécution du travail. Les paramètres que vous entrez dans la boîte de dialogue Réparer l’exécution du travail remplacent les valeurs existantes. Lors des exécutions de réparation suivantes, vous pouvez rétablir un paramètre à sa valeur d’origine en désactivant la clé et la valeur dans la boîte de dialogue Réparer l’exécution du travail.
  6. Cliquez sur Réparer l’exécution dans la boîte de dialogue Réparer l’exécution du travail.

Afficher l’historique des exécutions des tâches

Pour visualiser l’historique des exécutions d’une tâche, y compris les exécutions réussies et en échec :

  1. Cliquez sur une tâche dans la page Détails de l’exécution du travail. La page Détails d’exécution des tâches apparaît.
  2. Sélectionnez l’exécution de tâche dans la liste déroulante de l’historique des exécutions.

Planifier un travail

Pour définir une planification pour le travail :

  1. Cliquez sur Modifier la planification dans le volet Détails du travail et définissez le Type de planification sur Planifié.

  2. Indiquez la période, l’heure de début et le fuseau horaire. Si vous le souhaitez, activez la case à cocher Show Cron Syntax (Afficher la syntaxe Cron) pour afficher et modifier la planification dans la syntaxe Quartz Cron.

    Notes

    • Azure Databricks applique un intervalle minimal de 10 secondes entre les exécutions suivantes déclenchées par la planification d’un travail quelle que soit la configuration en secondes de l’expression cron.
    • Vous pouvez choisir un fuseau horaire qui respecte l’heure d’été ou l’heure UTC. Si vous sélectionnez une zone qui respecte l’heure d’été, une tâche horaire est ignorée ou peut sembler ne pas se déclencher pendant une heure ou deux lorsque l’heure d’été commence ou se termine. Pour exécuter toutes les heures (heure absolue), choisissez UTC.
    • Le planificateur de travaux n’est pas conçu pour les tâches à faible latence. En raison de problèmes de réseau ou de cloud, les exécutions de travaux peuvent parfois être retardées jusqu’à plusieurs minutes. Dans ce cas, les travaux planifiés sont exécutés immédiatement lorsque le service est disponible.
  3. Cliquez sur Enregistrer.

Vous pouvez également planifier une tâche de notebook directement dans l’interface utilisateur du notebook.

Suspendre et reprendre une planification de travail

Pour suspendre un travail, vous pouvez effectuer les actions suivantes :

  • Cliquez sur Suspendre dans le volet Détails du travail.
  • Cliquez sur Modifier la planification dans le volet Détails du travail et définissez le Type de planification sur Manual (Paused) [Manuel (Suspendu)].

Pour reprendre une planification de travail suspendue, définissez le Type de planification sur Planifié.

Afficher les travaux

Cliquez sur Icône TravauxWorkflows dans la barre latérale. La liste des travaux s’affiche. La page des travaux répertorie tous les travaux définis, la définition du cluster, la planification, le cas échéant, et le résultat de la dernière exécution.

Notes

Si l’augmentation de la limite des travaux est activée pour cet espace de travail, seuls 25 travaux sont affichés dans la liste Travaux pour améliorer le temps de chargement des pages. Utilisez les flèches gauche et droite pour parcourir la liste complète des travaux.

Vous pouvez filtrer les travaux dans la liste des travaux :

  • Utilisation de mots clés. Si la fonctionnalité d’augmentation de la limite des travaux est activée pour cet espace de travail, la recherche par mots clés est prise en charge uniquement pour les champs nom, ID de travail et étiquette de travail.
  • Sélection des travaux que vous possédez uniquement.
  • Sélection de tous les travaux auxquels vous êtes autorisé à accéder. L’accès à ce filtre requiert que le contrôle d’accès aux travaux soit activé.
  • Utilisation d’étiquettes. Pour rechercher une étiquette créée uniquement avec une clé, tapez la clé dans la zone de recherche. Pour rechercher une étiquette créée avec une clé et une valeur, vous pouvez lancer une recherche par clé, valeur ou clé et valeur. Par exemple, pour une étiquette avec la clé department et la valeur finance, vous pouvez rechercher department ou finance pour trouver les travaux correspondants. Pour effectuer une recherche par clé et valeur, entrez la clé et la valeur en les séparant par un signe deux-points ; par exemple, department:finance.

Vous pouvez également cliquer sur n’importe quel en-tête de colonne pour trier la liste des travaux (décroissant ou croissant) par cette colonne. Lorsque la fonctionnalité de l’augmentation de la limite des travaux est activée, vous pouvez trier uniquement par Name, Job ID ou Created by. Le tri par défaut est par Name dans l’ordre croissant.

Afficher les exécutions pour un travail

  1. Cliquez sur Icône TravauxWorkflows dans la barre latérale.
  2. Dans la colonne Nom, cliquez sur le nom d’un travail. L’onglet Exécutions apparaît avec une table des exécutions actives et des exécutions terminées.

Table d’exécutions de travail

Pour afficher les détails pour l’exécution d’une tâche, cliquez sur le lien pour l’exécution dans la colonne Heure de début du tableau Exécutions terminées (60 derniers jours). Pour afficher les détails de la dernière exécution réussie de cette tâche, cliquez sur Dernière exécution réussie (actualisation automatique).

Pour passer à une vue matricielle, cliquez sur Matrice. La vue matricielle montre un historique des exécutions pour le travail, avec chaque tâche du travail.

La ligne Exécutions du travail de la matrice affiche la durée totale de l’exécution et l’état de l’exécution. Pour voir les détails de l’exécution, y compris l’heure de début, la durée et l’état, pointez sur la barre dans la ligne Exécutions du travail.

Chaque cellule de la ligne Tâches représente une tâche et l’état correspondant de la tâche. Pour voir les détails de chaque tâche, y compris l’heure de début, la durée, le cluster et l’état, pointez sur la cellule pour cette tâche.

Les barres d’exécution du travail et d’exécution des tâches ont des codes couleur pour indiquer l’état de l’exécution. Les exécutions réussies sont en vert, les exécutions ayant échoué sont en rouge et les exécutions ignorées sont en rose. La hauteur des barres individuelles d’exécution du travail et d’exécution des tâches fournit une indication visuelle de la durée de l’exécution.

Matrice d’exécutions de travail

Azure Databricks conserve un historique de vos exécutions de travaux jusqu’à 60 jours. Si vous devez conserver des exécutions de travaux, Databricks vous recommande d’exporter les résultats avant qu’ils n’expirent. Pour plus d’informations, consultez Exporter les résultats de l’exécution d’un travail.

Afficher les détails de l’exécution d’un travail

La page de détails de l’exécution du travail contient la sortie du travail et des liens vers des journaux, y compris des informations sur la réussite ou l’échec de chaque tâche dans l’exécution du travail. Vous pouvez accéder aux détails de l’exécution d’un travail à partir de l’onglet Exécutions du travail. Pour afficher les détails de l’exécution d’un travail à partir de l’onglet Exécutions, cliquez sur le lien correspondant à l’exécution dans la colonne Heure de début du tableau Exécutions terminées (60 derniers jours). Pour revenir à l’onglet Exécutions du travail, cliquez sur la valeur ID du travail.

Cliquez sur une tâche pour afficher les détails de l’exécution de la tâche, y compris :

  • le cluster qui a exécuté la tâche ;
    • l’interface utilisateur Spark pour la tâche ;
    • les journaux de la tâche ;
    • les métriques de la tâche.

Cliquez sur la valeur ID du travail pour revenir à l’onglet Exécutions. Cliquez sur la valeur Job run ID (ID d’exécution du travail) pour revenir aux détails de l’exécution du travail.

Afficher les exécutions de travaux récentes

Vous pouvez afficher la liste des exécutions en cours et de celles qui se sont récemment terminées pour tous les travaux d’un espace de travail auquel vous avez accès, y compris les exécutions démarrées par des outils d’orchestration externes comme Apache Airflow ou Azure Data Factory. Pour afficher la liste des exécutions de travaux récentes :

  1. Cliquez sur Icône TravauxWorkflows dans la barre latérale. La liste des travaux s’affiche.
  2. Cliquez sur l’onglet Exécutions des travaux. La liste des exécutions de travaux s’affiche.

La liste Exécutions des travaux affiche :

  • L’heure de début de l’exécution.
  • Le nom du travail associé à l’exécution.
  • Le nom d’utilisateur sous lequel le travail s’exécute.
  • Si l’exécution a été déclenchée par une planification de travail ou par une demande d’API, ou si elle a été démarrée manuellement.
  • Le temps écoulé pour un travail en cours d’exécution ou la durée totale d’exécution pour une exécution terminée.
  • L’état de l’exécution : Pending, Running, Skipped, Succeeded, Failed, Terminating, Terminated, Internal Error, Timed Out, Canceled, Canceling ou Waiting for Retry.

Pour voir les détails de l’exécution du travail, cliquez sur le lien dans la colonne Heure de début pour l’exécution. Pour voir les détails du travail, cliquez sur le nom du travail dans la colonne Travail.

Exporter les résultats de l’exécution d’un travail

Vous pouvez exporter les résultats de l’exécution d’un notebook et les journaux d’exécution d’un travail pour tous les types de travaux.

Exporter les résultats de l’exécution d’un notebook

Vous pouvez conserver les exécutions d’un travail en exportant leurs résultats. Pour les exécutions de travaux d’un notebook, vous pouvez exporter un notebook rendu pouvant être importé ultérieurement dans votre espace de travail Azure Databricks.

Pour exporter les résultats de l’exécution du notebook pour un travail avec une seule tâche :

  1. Sur la page des détails du travail, cliquez sur le lien Afficher les détails de l’exécution dans la colonne Exécuter de la table Completed Runs (past 60 days) [Exécutions terminées (60 derniers jours)].
  2. Cliquez sur Exporter au format CSV.

Pour exporter les résultats de l’exécution du notebook pour un travail avec plusieurs tâches :

  1. Sur la page des détails du travail, cliquez sur le lien Afficher les détails de l’exécution dans la colonne Exécuter de la table Completed Runs (past 60 days) [Exécutions terminées (60 derniers jours)].
  2. Cliquez sur la tâche du notebook à exporter.
  3. Cliquez sur Exporter au format CSV.

Exporter les journaux de l’exécution d’un travail

Vous pouvez également exporter les journaux de l’exécution de votre travail. Vous pouvez configurer votre travail pour qu’il remette automatiquement les journaux à DBFS via l’API Travaux. Consultez l'objet new_cluster.cluster_log_conf dans le corps de la demande passé à l’opération Create a new job (Créer un travail) (POST /jobs/create) dans l’API Travaux.

Modifier un travail

Certaines options de configuration sont disponibles sur le travail et d’autres options sont disponibles sur les tâchesindividuelles. Par exemple, le nombre maximal d’exécutions simultanées peut être défini sur le travail uniquement, tandis que les paramètres doivent être définis pour chaque tâche.

Pour modifier la configuration d’un travail :

  1. Cliquez sur Icône TravauxWorkflows dans la barre latérale.
  2. Dans la colonne Nom, cliquez sur le nom d’un travail.

Le volet latéral affiche les Détails du travail. Vous pouvez modifier la planification, la configuration du cluster, les notifications, le nombre maximal d’exécutions simultanées et ajouter ou modifier des étiquettes. Si le contrôle d’accès aux travaux est activé, vous pouvez également modifier les autorisations du travail.

Balises

Pour ajouter des libellés ou des attributs clé:valeur à votre travail, vous pouvez ajouter des étiquettes quand vous modifiez le travail. Vous pouvez utiliser des étiquettes pour filtrer les travaux dans la liste Travaux. Par exemple, vous pouvez utiliser une étiquette department pour filtrer tous les travaux appartenant à un service spécifique.

Notes

Les étiquettes de travail n’étant pas conçues pour stocker des informations sensibles telles que des informations d’identification personnelle ou des mots de passe, Databricks recommande de limiter l’utilisation des étiquettes aux valeurs non sensibles.

Les étiquettes se propagent également aux clusters de travaux créés lors de l’exécution d’un travail, ce qui vous permet d’utiliser des étiquettes avec votre monitoring de cluster existant.

Pour ajouter ou modifier des étiquettes, cliquez sur + Étiquette dans le volet latéral Détails du travail. Vous pouvez ajouter l’étiquette en tant que clé et valeur, ou en tant que libellé. Pour ajouter un libellé, entrez-le dans le champ Clé et laissez le champ Valeur vide.

Clusters

Pour afficher les tâches associées à un cluster, pointez sur le cluster dans le volet latéral. Pour modifier la configuration du cluster pour toutes les tâches associées, cliquez sur Configurer sous le cluster. Pour configurer un nouveau cluster pour toutes les tâches associées, cliquez sur Basculer sous le cluster.

Nombre maximal d’exécutions simultanées

Nombre maximal d’exécutions parallèles pour ce travail. Azure Databricks ignore l’exécution si le travail a déjà atteint son nombre maximal d’exécutions actives lors de la tentative de démarrage d’une nouvelle exécution. Définissez cette valeur sur une valeur supérieure à la valeur par défaut de 1 pour exécuter simultanément plusieurs exécutions du même travail. Cela est utile, par exemple, si vous déclenchez un travail à intervalles fréquents et que vous souhaitez autoriser les exécutions consécutives à se chevaucher, ou si vous souhaitez déclencher plusieurs exécutions qui diffèrent par leurs paramètres d’entrée.

Notifications

Pour signaler quand les exécutions de ce travail commencent, se terminent ou échouent, vous pouvez ajouter une ou plusieurs adresses e-mail ou destinations système (par exemple des destinations webhook ou Slack).

Notes

  • Les notifications que vous paramétrez pour les tâches ne sont pas envoyées lorsque les tâches ayant échoué sont retentées. Pour recevoir une notification d’échec après chaque tâche ayant échoué (y compris toutes les nouvelles tentatives ayant échoué), utilisez plutôt les notifications de tâche.
  • Les destinations système sont en préversion publique.
  • Les destinations système doivent être configurées par un administrateur. La configuration des destinations système s’effectue en sélectionnant Créer une destination dans la boîte de dialogue Modifier les notifications système ou dans la console d’administration.

Pour ajouter des notifications par e-mail :

  1. Cliquez sur Modifier les notifications par e-mail.
  2. Cliquez sur Add.
  3. Entrez une adresse e-mail, puis cliquez sur la case à cocher pour chaque type de notification à envoyer à cette adresse.
  4. Pour entrer une autre adresse e-mail pour la notification, cliquez sur Ajouter.
  5. Si vous ne souhaitez pas recevoir de notifications pour les exécutions de travaux ignorées, cliquez sur la case à cocher.
  6. Cliquez sur Confirmer.

Intégrez ces notifications par e-mail à vos outils de notification préférés, à savoir :

Pour ajouter des notifications système :

Notes

Il existe une limite de trois destinations système par type de notification.

  1. Cliquez sur Modifier les notifications système.
  2. Dans Sélectionner une destination système, sélectionnez une destination, puis cochez la case correspondant à chaque type de notification à envoyer à cette destination.
  3. Pour ajouter une autre destination, cliquez à nouveau sur Sélectionner une destination système, puis sélectionnez une destination.
  4. Cliquez sur Confirmer.

Contrôler l’accès aux travaux

Le contrôle d’accès aux travaux permet aux propriétaires de travaux et aux administrateurs d’accorder des autorisations affinées sur leurs travaux. Les propriétaires de travaux peuvent choisir les utilisateurs ou les groupes qui peuvent afficher les résultats du travail. Les propriétaires peuvent également choisir qui peut gérer les exécutions de leurs travaux (autorisations Exécuter maintenant et Annuler l’exécution).

Pour plus d’informations, consultez Contrôle d’accès aux travaux.

Modifier une tâche

Pour définir les options de configuration des tâches :

  1. Cliquez sur Icône TravauxWorkflows dans la barre latérale.
  2. Dans la colonne Nom, cliquez sur le nom d’un travail.
  3. Cliquez sur l'onglet Tâches.

Dépendances de tâche

Vous pouvez définir l’ordre d’exécution des tâches dans un travail à l’aide du menu déroulant Dépend de. Vous pouvez définir ce champ sur une ou plusieurs tâches du travail.

Modifier les dépendances de tâche

Notes

Dépend de n’est pas visible si le travail n’est constitué que d’une seule tâche.

La configuration des dépendances de tâche crée une graphe orienté acyclique (DAG) d’exécution des tâches, une méthode courante de représentation de l’ordre d’exécution dans les planificateurs de travaux. Par exemple, imaginez le travail suivant constitué de quatre tâches :

Diagramme des exemples de dépendances de tâche

  • La tâche 1 est la tâche racine et ne dépend d’aucune autre tâche.
  • La tâche 2 et la tâche 3 dépendent de l’exécution préalable de la tâche 1.
  • Enfin, la tâche 4 dépend de l’exécution réussie de la tâche 2 et de la tâche 3.

Azure Databricks exécute des tâches en amont avant d’exécuter des tâches en aval, en exécutant autant d’entre elles en parallèle que possible. Le diagramme suivant illustre l’ordre de traitement de ces tâches :

Flux des exemples de dépendances des tâches

Options de configuration des tâches individuelles

Les tâches individuelles disposent des options de configuration suivantes :

Dans cette section :

Cluster

Pour configurer le cluster dans lequel une tâche s’exécute, cliquez sur le menu déroulant Cluster. Vous pouvez modifier un cluster de travail partagé, mais vous ne pouvez pas supprimer un cluster partagé s’il est toujours utilisé par d’autres tâches.

Pour en savoir plus sur la sélection et la configuration de clusters pour exécuter des tâches, consultez les conseils sur la configuration des clusters.

Bibliothèques dépendantes

Les bibliothèques dépendantes sont installées sur le cluster avant l’exécution de la tâche. Vous devez définir toutes les dépendances de tâche pour vous assurer qu’elles sont installées avant le démarrage de l’exécution.

Pour ajouter une bibliothèque dépendante, cliquez sur Options avancées, puis sélectionnez Add Dependent Libraries (Ajouter des bibliothèques dépendantes) pour ouvrir le sélecteur Add Dependent Library (Ajouter une bibliothèque dépendante). Suivez les suggestions indiquées dans Dépendances de bibliothèque pour spécifier des dépendances.

Notifications de tâche

Pour ajouter des notifications par e-mail pour la réussite ou l’échec des tâches, cliquez sur Options avancées et sélectionnez Modifier les notifications. Les notifications d’échec sont envoyées lors de l’échec initial de la tâche et toutes les nouvelles tentatives suivantes.

Variables de paramètre de tâche

Vous pouvez passer des variables basées sur un modèle dans une tâche de travail dans le cadre des paramètres de la tâche. Ces variables sont remplacées par les valeurs appropriées lors de l’exécution de la tâche de travail. Vous pouvez utiliser des valeurs de paramètre de tâche pour passer le contexte d’exécution d’un travail, tel que l’ID d’exécution ou l’heure de début du travail.

Lorsqu’un travail s’exécute, la variable de paramètre de tâche entourée d’accolades doubles est remplacée et ajoutée à une valeur de chaîne facultative incluse dans le cadre de la valeur. Par exemple, pour passer un paramètre nommé MyJobId avec la valeur my-job-6 pour toute exécution de l’ID de travail 6, ajoutez le paramètre de tâche suivant :

{
  "MyJobID": "my-job-{{job_id}}"
}

Le contenu des accolades doubles n’étant pas évalué comme une expression, vous ne pouvez pas effectuer d’opérations ou de fonctions dans les accolades. L’espace blanc n’est pas supprimé à l’intérieur des accolades, {{ job_id }} n’est donc pas évalué.

Les variables de paramètre de tâche suivantes sont prises en charge :

Variable Description Valeur d'exemple
{{job_id}} Identificateur unique attribué à un travail 1276862
{{run_id}} Identificateur unique attribué à une exécution de tâche 3447843
{{start_date}} Date de début d’exécution d’une tâche. Le format est yyyy-MM-JJ dans le fuseau horaire UTC. 2021-02-15
{{start_time}} Timestamp de début d’exécution de l’exécution après la création et la préparation du cluster. Le format est en millisecondes depuis l’époque UNIX du fuseau horaire UTC, tel que retourné par System.currentTimeMillis(). 1551622063030
{{task_retry_count}} Nombre de nouvelles tentatives qui ont été tentées pour exécuter une tâche en cas d’échec de la première tentative. La valeur est 0 pour la première tentative et est incrémentée à chaque nouvelle tentative. 0
{{parent_run_id}} Identificateur unique attribué à l’exécution d’un travail avec plusieurs tâches. 3447835
{{task_key}} Nom unique attribué à une tâche qui fait partie d’un travail avec plusieurs tâches. “clean_raw_data”

Vous pouvez définir ces variables avec n’importe quelle tâche lors de la création d’un travail, de la modification d’un travail ou de l'exécution d’un travail avec des paramètres différents.

Vous pouvez également transmettre des paramètres entre les tâches d’un travail avec des valeurs de tâche. Consultez Partager des informations parmi des tâches dans un travail Azure Databricks.

Délai d'expiration

Durée d’exécution maximale d’un travail. Si le travail n’est pas terminé dans ce délai, Azure Databricks définit son état sur « Expiré ».

Nouvelle tentatives

Stratégie qui détermine quand et combien de fois les exécutions ayant échoué sont retentées. Pour définir les nouvelles tentatives pour la tâche, cliquez sur Options avancées, puis sélectionnez Edit Retry Policy (Modifier la stratégie de nouvelles tentatives). L’intervalle de nouvelle tentative est calculé en millisecondes entre le début de l’exécution ayant échoué et l’exécution de la nouvelle tentative suivante.

Notes

Si vous configurez le délai d’expiration et les nouvelles tentatives, le délai d’expiration s’applique à chaque nouvelle tentative.

Cloner un travail

Vous pouvez créer rapidement un nouveau travail en clonant un travail existant. Le clonage d’un travail crée une copie identique du travail, à l’exception de l’ID du travail. Sur la page du travail, cliquez sur Plus... en regard du nom du travail, puis sélectionnez Cloner dans le menu déroulant.

Cloner une tâche

Vous pouvez créer rapidement une nouvelle tâche en clonant une tâche existante :

  1. Sur la page du travail, cliquez sur l’onglet Tâches.
  2. Sélectionnez la tâche à cloner.
  3. Cliquez sur Trois points verticaux Travaux, puis sélectionnez Clone task (Cloner la tâche).

Supprimer un travail

Pour supprimer un travail, sur la page du travail, cliquez sur Plus... en regard du nom du travail, puis sélectionnez Supprimer dans le menu déroulant.

Supprimer une tâche

Pour supprimer une tâche :

  1. Cliquez sur l'onglet Tâches.
  2. Sélectionnez la tâche à supprimer.
  3. Cliquez sur Trois points verticaux Travaux, puis sélectionnez Supprimer la tâche.

Copier un chemin d'accès de tâche

Pour copier le chemin d’accès à une tâche, par exemple, un chemin d’accès de notebook :

  1. Cliquez sur l'onglet Tâches.
  2. Sélectionnez la tâche contenant le chemin d’accès à copier.
  3. Cliquez sur Icône de copie de travaux en regard du chemin d’accès de tâche pour copier le chemin d’accès dans le Presse-papiers.

Meilleures pratiques

Dans cette section :

Conseils de configuration du cluster

La configuration du cluster est importante lorsque vous utiliser un travail. Les informations suivantes fournissent des conseils généraux sur le choix et la configuration des clusters de travaux, suivies de suggestions pour des types de travaux spécifiques.

Utiliser des clusters de travaux partagés

Pour optimiser l’utilisation des ressources avec des travaux qui orchestrent plusieurs tâches, utilisez des clusters de travaux partagés. Un cluster de travail partagé permet l’exécution de plusieurs tâches dans le même travail pour réutiliser le cluster. Vous pouvez utiliser un cluster à travail unique pour exécuter toutes les tâches qui font partie du travail ou plusieurs clusters de travaux optimisés pour des charges de travail spécifiques. Pour utiliser un cluster de travail partagé :

  1. Sélectionnez New Job Clusters (Nouveaux clusters de travaux) lorsque vous créez une tâche et terminez la configuration du cluster.
  2. Sélectionnez le nouveau cluster lorsque vous ajoutez une tâche au travail, ou créez un nouveau cluster de travail. Tout cluster que vous configurez lorsque vous sélectionnez New Job Clusters (Nouveaux clusters de travaux) est disponible pour n’importe quelle tâche du travail.

Un cluster de travail partagé est limité à une seule exécution de travail et ne peut pas être utilisé par d’autres travaux ou exécutions du même travail.

Les bibliothèques ne peuvent pas être déclarées dans la configuration d’un cluster de travail partagé. Vous devez ajouter des bibliothèques dépendantes dans les paramètres de tâche.

Choisir le type de cluster approprié à votre travail

  • Les nouveaux clusters de travaux sont des clusters dédiés pour l’exécution d’un travail ou d’une tâche. Un cluster de travail partagé est créé et démarré lorsque la première tâche utilisant le cluster démarre, et se termine après la fin de la dernière tâche utilisant le cluster. Le cluster n’est pas terminé lorsqu’il est inactif, mais se termine uniquement une fois que toutes les tâches qui l’utilisent sont terminées. Si un cluster de travail partagé échoue ou se termine avant que toutes les tâches soient terminées, un nouveau cluster est créé. Un cluster étendu à une tâche unique est créé et démarré lorsque la tâche démarre et se termine lorsque la tâche est terminée. En production, Databricks recommande d’utiliser de nouveaux clusters partagés ou à étendue de tâches afin que chaque travail ou tâche s’exécute dans un environnement totalement isolé.
  • Lorsque vous exécutez une tâche sur un nouveau cluster, la tâche est traitée comme une charge de travail d’ingénierie des données (tâche), sous réserve de la tarification de la charge de travail de tâche. Lorsque vous exécutez une tâche sur un cluster à usage général existant, la tâche est traitée comme une charge de travail d’analyse des données (à usage général), sous réserve de la tarification de la charge de travail à usage général.
  • Si vous sélectionnez un cluster existant terminé et que le propriétaire du travail dispose de l’autorisationPeut redémarrer, Azure Databricks démarre le cluster lorsque l’exécution du travail est planifiée.
  • Les clusters à usage général existants fonctionnent mieux pour des tâches comme la mise à jour des tableaux de bord à intervalles réguliers.

Utiliser un pool pour réduire les temps de démarrage du cluster

Pour réduire le temps de démarrage du nouveau cluster de travail, créez un pool et configurez le cluster du travail pour qu’il utilise le pool.

Conseils sur les travaux de notebook

La sortie totale des cellules du notebook (la sortie combinée de toutes les cellules du notebook) est soumise à une limite de taille de 20 Mo. En outre, la sortie de cellule individuelle est soumise à une limite de taille de 8 Mo. Si la sortie totale des cellules dépasse 20 Mo, ou si la sortie d’une cellule individuelle est supérieure à 8 Mo, l’exécution est annulée et marquée comme ayant échoué.

Si vous avez besoin d’aide pour trouver les cellules proches ou au-delà de la limite, exécutez le notebook sur un cluster à usage général et utilisez cette technique d’enregistrement automatique du notebook.

Tâches de streaming

Les travaux de streaming Spark ne doivent jamais avoir un nombre maximal d’exécutions simultanées défini sur une valeur supérieure à 1. Les travaux de streaming doivent être configurés pour s’exécuter à l’aide de l’expression cron "* * * * * ?" (toutes les minutes).

Étant donné qu’une tâche de streaming s’exécute en continu, elle doit toujours être la dernière tâche d’un travail.

Travaux JAR

Pour en savoir plus sur l’empaquetage de votre code dans un fichier JAR et la création d’un travail qui utilise le fichier JAR, consultez Utiliser un fichier JAR dans un travail Azure Databricks.

Lors de l’exécution d’un travail JAR, gardez à l’esprit les points suivants :

Limites de taille de sortie

La sortie des travaux, telle que la sortie de journal émise vers stdout, est soumise à une limite de taille de 20 Mo. Si la sortie totale a une taille supérieure, l’exécution est annulée et marquée comme ayant échoué.

Pour éviter de rencontrer cette limite, vous pouvez empêcher le renvoi de stdout du pilote à Azure Databricks en définissant la configuration Spark spark.databricks.driver.disableScalaOutput sur true. Par défaut, la valeur de l’indicateur est false. L’indicateur contrôle la sortie des cellules pour les travaux JAR Scala et les notebooks Scala. Si l’indicateur est activé, Spark ne renvoie pas les résultats de l’exécution du travail au client. L’indicateur n’affecte pas les données qui sont écrites dans les fichiers journaux du cluster. Définir cet indicateur est recommandé uniquement pour les clusters de travaux pour les travaux JAR, car il désactive les résultats du notebook.

Utiliser le SparkContext partagé

Étant donné qu’Azure Databricks est un service géré, certaines modifications du code peuvent être nécessaires pour s’assurer que vos travaux Apache Spark s’exécutent correctement. Les programmes de travaux JAR doivent utiliser l’API SparkContext partagée pour accéder à SparkContext. Étant donné qu’Azure Databricks Initialise SparkContext, les programmes qui appellent new SparkContext() échouent. Pour obtenir SparkContext, utilisez uniquement le SparkContext partagé créé par Azure Databricks :

val goodSparkContext = SparkContext.getOrCreate()
val goodSparkSession = SparkSession.builder().getOrCreate()

Il existe également plusieurs méthodes que vous devez éviter lorsque vous utilisez le SparkContext partagé.

  • N’appelez pas SparkContext.stop().
  • N’appelez pas System.exit(0) ou sc.stop() à la fin de votre programme Main. Cela peut entraîner un comportement indéfini.

Utiliser des blocs try-finally pour le nettoyage du travail

Imaginez un fichier JAR constitué de deux parties :

  • jobBody() qui contient la partie principale du travail.
  • jobCleanup() qui doit être exécuté après jobBody(), que cette fonction ait réussi ou retourné une exception.

Par exemple, jobBody() peut créer des tables, et vous pouvez utiliser jobCleanup() pour supprimer ces tables.

Le moyen le plus sûr pour s’assurer que la méthode de nettoyage est appelée consiste à placer un bloc try-finally dans le code :

try {
  jobBody()
} finally {
  jobCleanup()
}

Vous ne devez pas essayer de nettoyer à l’aide de sys.addShutdownHook(jobCleanup) ou du code suivant :

val cleanupThread = new Thread { override def run = jobCleanup() }
Runtime.getRuntime.addShutdownHook(cleanupThread)

En raison du mode de gestion de la durée de vie des conteneurs Spark dans Azure Databricks, les raccordements d’arrêt ne sont pas exécutés de manière fiable.

Configurer les paramètres d’un travail JAR

Vous passez des paramètres à des travaux JAR avec un tableau de chaînes JSON. Consultez l'objet spark_jar_task dans le corps de la demande passé à l’opération Create a new job (Créer un travail) (POST /jobs/create) dans l’API Travaux. Pour accéder à ces paramètres, inspectez le tableau String passé dans votre fonction main.

Dépendances de bibliothèque

Le pilote Spark comporte certaines dépendances de bibliothèque qui ne peuvent pas être remplacées. Ces bibliothèques sont prioritaires par rapport à l’une de vos bibliothèques en conflit avec celles-ci.

Pour obtenir la liste complète des dépendances de bibliothèque du pilote, exécutez la commande suivante à l’intérieur d’un notebook attaché à un cluster de la même version Spark (ou du cluster avec le pilote que vous souhaitez examiner).

%sh
ls /databricks/jars

Gérer les dépendances de bibliothèque

Une bonne règle empirique de gestion des dépendances de bibliothèque lors de la création de fichiers JAR pour les travaux consiste à répertorier Spark et Hadoop en tant que dépendances provided. Sur Maven, ajoutez Spark et Hadoop en tant que dépendances fournies, comme illustré dans l’exemple suivant :

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-core_2.11</artifactId>
  <version>2.3.0</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-core</artifactId>
  <version>1.2.1</version>
  <scope>provided</scope>
</dependency>

Dans sbt, ajoutez Spark et Hadoop en tant que dépendances fournies, comme illustré dans l’exemple suivant :

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.3.0" % "provided"
libraryDependencies += "org.apache.hadoop" %% "hadoop-core" % "1.2.1" % "provided"

Conseil

Spécifiez la version Scala appropriée à vos dépendances en fonction de la version que vous exécutez.