travaux

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 d’extraction, de transformation et de 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 bloc-notes.

Vous pouvez créer et exécuter un travail à l’aide de l’interface utilisateur, de l’interface CLI et de l’appel de l’API Jobs. Vous pouvez surveiller les résultats d’exécution des travaux à l’aide de l’interface utilisateur, de l’interface CLI, de l’API et des alertes par e-mail. Cet article se concentre sur l’exécution de tâches de travail à l’aide de l’interface utilisateur. Pour les autres méthodes, consultez travaux CLI et travaux API 2,1.

Vous pouvez activer l' orchestration de tâches multitâches dans votre espace de travail Azure Databricks. Lorsque l’orchestration de tâche est activée, un travail peut se composer d’une ou plusieurs tâches et Azure Databricks gère l’orchestration de tâche, la gestion de cluster, la surveillance et le rapport d’erreurs pour le travail. Dans un espace de travail sans que l’orchestration des tâches soit activée, un travail se compose d’une seule tâche. Databricks recommande l’activation de l’orchestration des tâches afin de simplifier la création, la gestion et la surveillance des données et des flux de travail de Machine Learning. Pour plus d’informations sur l’activation de l’orchestration de tâche, consultez Configuration requise .

Vous pouvez implémenter une tâche dans un bloc-notes Azure Databricks, un pipeline de tables dynamiques Delta ou une application écrite en Scala, Java ou python. Les applications de soumission Spark héritées sont également prises en charge.

Lorsque l’orchestration de plusieurs tâches est activée, 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 diagramme suivant illustre un flux de travail qui :

  1. Ingère les données brutes parcours et effectue le traitement pour la session des enregistrements.

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

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

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

    Exemple de flux de travail multitâche

Pour créer votre premier travail orchestration de plusieurs tâches, consultez démarrage rapide des tâches.

Important

  • vous pouvez créer des travaux uniquement dans un espace de travail Science des données & ou un espace de travail Machine Learning.
  • Un espace de travail est limité à 1000 exécutions simultanées de travaux. Une 429 Too Many Requests réponse 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 dans une heure est limité à 5000 (y compris « exécuter maintenant » et « exécutions »). Cette limite affecte également les travaux créés par les workflows de l’API REST et des notebooks.

Configuration requise

Pour créer des travaux qui orchestrent plusieurs tâches, un administrateur doit activer la prise en charge dans la console d’administration Databricks.

Créer un travail

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

    • Cliquez sur travaux icônetravaux dans la barre latérale, puis cliquez sur le bouton créer une tâche.
    • Dans la barre latérale, cliquez sur créer une icônecréer , puis sélectionnez travail dans le menu.

    L’onglet tâches s’affiche avec la boîte de dialogue créer une tâche si l’orchestration de plusieurs tâches est activée. L’onglet tâche s’affiche avec la boîte de dialogue créer une tâche si l’orchestration de la tâche n’est pas activée.

    Écran de création de tâche

  2. Remplacez Ajouter un nom pour votre travail... avec le nom de votre travail.

  3. Si l’orchestration de plusieurs tâches est activée, entrez un nom pour la tâche dans le champ nom de la tâche .

  4. Spécifiez le type de tâche à exécuter. Dans la liste déroulante type , sélectionnez Notebook, jar, Spark Submit, pythonou pipeline.

    • Notebook: utilisez l’Explorateur de fichiers pour rechercher le bloc-notes, cliquez sur le nom du bloc-notes, puis sur confirmer.

    • Jar: spécifiez la classe principale. Utilisez le nom qualifié complet de la classe contenant la méthode main, par exemple org.apache.spark.examples.SparkPi . Cliquez ensuite sur Ajouter sous 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 la page travaux jar.

    • Envoi Spark: dans la zone de texte paramètres , spécifiez la classe principale, le chemin d’accès au fichier jar de la bibliothèque et tous les arguments, mis en forme en tant que tableau de chaînes JSON. L’exemple suivant configure une tâche d’envoi Spark pour exécuter le DFSReadWriteTest à partir des exemples de 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 d' envoi Spark :

      • 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’échelleautomatique du cluster.
      • Spark-Submit ne prend pas en charge les utilitaires Databricks. Pour utiliser les utilitaires Databricks, utilisez des tâches JAR à la place.
    • Python: dans la zone de texte chemin d’accès , entrez l’URI d’un script Python sur dBFS ou sur le stockage cloud. par exemple, .

    • Pipeline: dans la liste déroulante pipeline , choisissez un pipeline de tables dynamiques Delta existant.

  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 de All-Purpose existants.

    • Nouveau cluster de travaux: cliquez sur modifier dans la liste déroulante cluster et terminez la configuration du cluster.
    • Cluster All-Purpose existant: sélectionnez un cluster existant dans la liste déroulante cluster . Pour ouvrir le cluster dans une nouvelle page, cliquez sur l’icône de 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 conseils sur la configuration du cluster.

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

    • Bloc-notes: 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 quand 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 bloc-notes spécifié par la clé du paramètre. Utilisez des 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 de la tâche jar.
    • Tâche d' envoi Spark : les paramètres sont spécifiés sous la forme d’un tableau de chaînes au format JSON. Conforme à la Convention d' envoi Apache Spark Spark , les paramètres après le chemin d’accès du fichier jar sont passés à la méthode main de la classe principale.
    • 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.
  7. Pour accéder à des options supplémentaires, notamment les bibliothèques dépendantes, la stratégie de nouvelle tentative et les délais d’attente, cliquez sur Options avancées. Consultez modifier une tâche.

  8. Cliquez sur Créer.

  9. Pour définir éventuellement la planification du travail, cliquez sur modifier la planification dans le volet Détails du travail . Consultez planifier un travail.

  10. Pour autoriser éventuellement plusieurs exécutions simultanées du même travail, cliquez sur modifier les exécutions simultanées dans le volet Détails du travail . Voir nombre maximal d’exécutions simultanées.

  11. Si vous souhaitez spécifier des adresses de messagerie pour recevoir des alertes sur des événements de travail, cliquez sur modifier les alertes dans le volet Détails du travail . Consultez alertes.

  12. Pour contrôler éventuellement 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 lorsque l’orchestration de tâche est activée, cliquez sur le bouton Ajouter une tâche sous la tâche que vous venez de créer.

Exécuter une tâche

  1. Cliquez sur tâches icônetravaux 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 l’exécution ultérieure du travail.

Exécuter immédiatement un travail

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

Conseil

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

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

Vous pouvez utiliser 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 Blue accent circonflexe à côté de Exécuter maintenant et sélectionnez Exécuter maintenant avec des paramètres différents ou, dans le tableau des exécutions actives , cliquez sur 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. 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. Les paramètres fournis sont fusionnés avec les paramètres par défaut pour la série déclenchée. 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.

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. Spécifiez la période, l’heure de début et le fuseau horaire. Si vous le souhaitez, activez la case à cocher afficher la syntaxe cron pour afficher et modifier la planification dans la syntaxe de la quartz cron.

    Remarque

    • 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 destiné aux tâches à faible latence. En raison de problèmes de réseau ou de Cloud, les exécutions de tâches peuvent parfois être retardées jusqu’à plusieurs minutes. Dans ce cas, les tâches planifiées sont exécutées immédiatement après la disponibilité du service.
  3. Cliquez sur Enregistrer.

Suspendre et reprendre une planification de travail

Pour suspendre un travail, vous pouvez :

  • Cliquez sur suspendre dans le panneau des Détails du travail .
  • Cliquez sur modifier la planification dans le volet Détails du travail et définissez le type de planification sur manuel (suspendu) .

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

Afficher les travaux

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

Vous pouvez filtrer les tâches dans la liste des travaux :

  • Utilisation de mots clés.
  • 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 des travaux soit activé.

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. Le tri par défaut est par nom de tâche dans l’ordre croissant.

Afficher les exécutions de travaux

  1. Cliquez sur tâches icônetravaux dans la barre latérale.
  2. Dans la colonne nom , cliquez sur un nom de travail. L’onglet exécutions affiche les exécutions actives et les exécutions terminées.

Détails du travail

Azure Databricks conserve un historique de vos exécutions de travaux pendant 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 du travail.

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

La page Détails de l’exécution du travail contient la sortie du travail et des liens vers les journaux. Lorsque l’orchestration de plusieurs tâches est activée, la page Détails de l’exécution du travail contient des informations sur la réussite ou l’échec de chaque tâche de l’exécution du travail. Vous pouvez accéder aux détails de l’exécution du travail à partir de l’onglet exécutions du travail. Pour afficher les détails de l’exécution de la tâche à partir de l’onglet exécutions, cliquez sur le lien afficher les détails de l’exécution dans la colonne exécuter du tableau exécutions terminées (60 derniers jours) .

Pour un travail qui orchestre plusieurs tâches, cliquez sur une tâche à afficher :

  • cluster qui a exécuté la tâche
    • interface utilisateur Spark pour la tâche
    • journaux de la tâche
    • métriques de la tâche

Exporter les résultats de l’exécution du travail

Vous pouvez exporter les résultats d’exécution du bloc-notes et les journaux d’exécution des travaux pour tous les types de travaux.

Exporter les résultats de l’exécution du bloc-notes

Vous pouvez conserver les exécutions de travaux en exportant leurs résultats. Pour les tâches du bloc-notes, vous pouvez Exporter un bloc-notes rendu pouvant être importé ultérieurement dans votre espace de travail Azure Databricks.

Pour exporter des résultats d’exécution de bloc-notes pour un travail avec une seule tâche :

  1. Sur la page Détails du travail, cliquez sur le lien afficher les détails de l’exécution dans la colonne exécuter de la table exécutions terminées (60 derniers jours) .
  2. Cliquez sur Exporter au format html.

Pour exporter des résultats d’exécution de bloc-notes pour un travail avec plusieurs tâches :

  1. Sur la page Détails du travail, cliquez sur le lien afficher les détails de l’exécution dans la colonne exécuter de la table exécutions terminées (60 derniers jours) .
  2. Cliquez sur la tâche du bloc-notes à exporter.
  3. Cliquez sur Exporter au format html.

Exporter les journaux d’exécution des travaux

Vous pouvez également exporter les journaux de l’exécution de votre travail. Vous pouvez configurer votre tâche pour remettre automatiquement les journaux à DBFS via l’API Job. Consultez l' new_cluster.cluster_log_conf objet dans le corps de la requête passé à l’opération new_cluster.cluster_log_conf ( POST /jobs/create ) dans l’API tâches.

Modifier un travail

Certaines options de configuration sont disponibles sur le travail et d’autres options sont disponibles pour 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 tâches icônetravaux dans la barre latérale.
  2. Dans la colonne nom , cliquez sur le nom du travail.

Le panneau latéral affiche les Détailsde la tâche. Vous pouvez modifier la planification, la configuration du cluster, les alertes et le nombre maximal d’exécutions simultanées. Vous pouvez également modifier les autorisations de la tâche si le contrôle d’accès aux tâches est activé.

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 le nombre maximal de séries 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 que vous souhaitez déclencher plusieurs exécutions qui diffèrent par leurs paramètres d’entrée.

Alertes

Alertes par courrier électronique envoyées en cas d’échec, de réussite ou d’expiration du travail. Vous pouvez définir des alertes pour le début de la tâche, la réussite du travail et l’échec de la tâche (y compris les travaux ignorés), en fournissant plusieurs adresses de messagerie séparées par des virgules pour chaque type d’alerte. Vous pouvez également refuser les alertes pour les exécutions de travaux ignorées.

Configurer des alertes par courrier électronique

Intégrez ces alertes par courrier électronique à vos outils de notification préférés, notamment :

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 leurs travaux d’exécution (exécuter maintenant et annuler les autorisations d’exécution).

Pour plus d’informations, consultez contrôle d’accès aux tâches .

Modifier une tâche

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

  1. Cliquez sur tâches icônetravaux dans la barre latérale.
  2. Dans la colonne nom , cliquez sur le nom du travail.
  3. Lorsque l’orchestration de plusieurs tâches est activée, cliquez sur l’onglet tâches . Si l’orchestration de la tâche n’est pas activée, cliquez sur l’onglet tâche .

Dépendances de tâches

Lorsque l’orchestration de plusieurs tâches est activée, vous pouvez définir l’ordre d’exécution des tâches dans un travail à l’aide de la liste déroulante dépend de . Vous pouvez définir ce champ sur une ou plusieurs tâches du travail.

Modifier les dépendances de tâche

Remarque

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

la configuration des dépendances de tâches crée une Graph (DAG) de l’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, considérez la tâche suivante constituée de quatre tâches :

Diagramme de l’exemple 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 en premier de la tâche 1.
  • Enfin, la tâche 4 dépend 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 :

Exemple de flow de dépendances de tâche

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 est exécutée, cliquez sur la liste déroulante cluster . Pour en savoir plus sur la sélection et la configuration de clusters pour exécuter des tâches, consultez conseils sur la configuration du cluster.

Remarque

Chaque tâche s’exécute sur un cluster à usage général ou dans un nouveau cluster de travaux. Vous ne pouvez pas utiliser le même cluster de travail pour plusieurs tâches dans un travail.

Bibliothèques dépendantes

Les bibliothèques dépendantes seront installées sur le cluster avant l’exécution de la tâche. Vous devez définir toutes les dépendances de tâches 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 Ajouter des bibliothèques dépendantes pour ouvrir le sélecteur de bibliothèque dépendante . Suivez les recommandations dans dépendances de bibliothèque pour spécifier des dépendances.

Important

Si vous avez configuré une bibliothèque de sorte qu’elle s' installe automatiquement sur tous les clusters, ou si vous sélectionnez un cluster existant avec des bibliothèques installées, l’exécution de la tâche n’attend pas la fin de l’installation de la bibliothèque. Si un travail requiert une bibliothèque spécifique, vous devez attacher la bibliothèque au travail dans le champ bibliothèques dépendantes.

Variables de paramètre de tâche

Vous pouvez passer des variables de 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 transmettre le contexte à l’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 my-job-6 la valeur pour toute exécution de l’ID de tâche 6, ajoutez le paramètre de tâche suivant :

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

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

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

Variable Description
{{job_id}} Identificateur unique affecté à un travail
{{run_id}} Identificateur unique affecté à un travail exécuté
{{start_date}} Date de début d’exécution d’un travail. Le format est yyyy-MM-JJ dans le fuseau horaire UTC.
{{start_time}} Horodatage du début de l’exécution de l’exécution après la création et la préparation du cluster. le format est millisecondes depuis UNIX époque du fuseau horaire UTC, tel qu’il est retourné par System.currentTimeMillis() .
{{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 s’incrémente à chaque nouvelle tentative.

Les variables de paramètre de tâche suivantes sont prises en charge lorsque l’orchestration de plusieurs tâches est activée :

Variable Description Valeur d'exemple
{{parent_run_id}} Identificateur unique affecté à l’exécution d’un travail avec plusieurs tâches. 3447835
{{task_key}} Nom unique affecté à 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 travailou de l' exécution d’un travail avec des paramètres différents.

Délai d'expiration

Durée d’exécution maximale d’un travail. Si la tâche n’est pas terminée 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 modifier la stratégie de nouvelle tentative.

Remarque

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

Cloner un travail

Vous pouvez créer rapidement un nouveau travail en clonant la configuration d’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 clone dans le menu déroulant.

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 lorsque l’orchestration de plusieurs tâches est activée, cliquez sur l’onglet tâches , sélectionnez la tâche à supprimer, puis cliquez sur le bouton supprimer la tâche.

Bonnes pratiques

Dans cette section :

Conseils sur la configuration du cluster

La configuration du cluster est importante lorsque vous configurez un travail. Les éléments suivants fournissent des conseils généraux sur le choix et la configuration des clusters de travaux, suivis de recommandations pour des types de tâches spécifiques.

Choisir le type de cluster approprié pour votre travail

  • Les nouveaux clusters de travail sont des clusters dédiés créés et démarrés lorsque vous exécutez une tâche et que vous terminez immédiatement après la fin de la tâche. En production, Databricks recommande l’utilisation de nouveaux clusters afin que chaque 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), en fonction de la tarification de la charge de travail des tâches. 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 peut redémarrerl'autorisation, 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 les tâches telles que la mise à jour des tableaux de bord à intervalles réguliers.

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

Pour réduire l’heure de début 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 Notebook

La sortie totale des cellules du bloc-notes (la sortie combinée de toutes les cellules du bloc-notes) 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 taille 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 des cellules à proximité ou au-delà de la limite, exécutez le bloc-notes sur un cluster à usage général et utilisez cette technique d’enregistrement automatique de bloc-notes.

Tâches de streaming

Les travaux de diffusion en continu Spark ne doivent jamais avoir un nombre maximal d’exécutions simultanées défini sur une valeur supérieure à 1. Les travaux de diffusion en continu doivent également être configurés pour s’exécuter avec une planification cron "* * * * * *" (chaque seconde) ou toutes les minutes. En outre, les nouvelles tentatives ne doivent jamais être activées pour les travaux de diffusion en continu.

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

Travaux JAR

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

Limites de taille de la sortie

Remarque

Disponible dans Databricks Runtime 6,3 et versions ultérieures.

La sortie d’une tâche, 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 d’être confronté à cette limite, vous pouvez empêcher le retour de stdout du pilote à Azure Databricks en affectant spark.databricks.driver.disableScalaOutput à la configuration Spark la valeur true . Par défaut, la valeur de l’indicateur est false . L’indicateur contrôle la sortie de cellule pour les travaux JAR Scala et les blocs-notes Scala. Si l’indicateur est activé, Spark ne retourne pas les résultats de l’exécution du travail au client. L’indicateur n’affecte pas les données é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 partagé SparkContext

Étant donné que 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 travail JAR doivent utiliser l' SparkContext API partagée pour accéder au SparkContext . Étant donné que Azure Databricks Initialise le SparkContext , les programmes qui appellent new SparkContext() échouent. Pour ce faire SparkContext , utilisez uniquement le partagé SparkContext 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 partagé SparkContext .

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

Utiliser try-finally des blocs 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 que jobBody() cette fonction a 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 de s’assurer que la méthode de nettoyage est appelée consiste à placer un try-finally bloc dans le code :

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

Vous ne devez pas essayer de procéder au nettoyage à l’aide de 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 du travail JAR

Vous transmettez des paramètres à des travaux JAR avec un tableau de chaînes JSON. Consultez l' spark_jar_task objet dans le corps de la requête passé à l’opération spark_jar_task ( POST /jobs/create ) dans l’API tâches. Pour accéder à ces paramètres, inspectez le String tableau passé dans votre main fonction.

Dépendances de bibliothèque

Le pilote Spark a 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 qui sont en conflit avec elles.

Pour obtenir la liste complète des dépendances de la bibliothèque de pilotes, exécutez la commande suivante à l’intérieur d’un bloc-notes 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 pour gérer les 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 provided dépendances. 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 comme 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 correcte pour vos dépendances en fonction de la version que vous exécutez.