Planifier et orchestrer des flux de travail
Le flux de travail Databricks dispose d’outils qui vous permettent de planifier et d’orchestrer des tâches de traitement de données sur Azure Databricks. Vous utilisez les flux de travail Databricks pour configurer les Travaux Databricks.
Cet article présente les concepts et les choix liés à la gestion des charges de travail de production à l’aide de projets Databricks.
Que sont les projets Databricks ?
Un projet est l’unité principale de planification et d’orchestration des charges de travail de production sur Azure Databricks. Les projets consistent en une ou plusieurs tâches. Ensemble, les tâches et les projets vous permettent de configurer et de déployer les éléments suivants :
- Logique personnalisée, y compris Spark, SQL, OSS Python, ML et code arbitraire.
- Ressources de capacité de calcul avec des environnements et des bibliothèques personnalisés.
- Planifie et déclenche des charges de travail en cours d’exécution.
- Logique conditionnelle pour le flux de contrôle entre les tâches.
Les projets fournissent une approche procédurale pour définir les relations entre les tâches. Les pipelines Delta Live Tables fournissent une approche déclarative pour définir les relations entre les jeux de données et les transformations. Vous pouvez inclure des pipelines Delta Live Tables comme tâche dans un projet. Consultez Tâche du pipeline Delta Live Tables pour les projets.
Les travaux peuvent varier en complexité d’une tâche unique exécutant un notebook Databricks à des milliers de tâches s’exécutant avec des dépendances et une logique conditionnelle.
Comment puis-je configurer et exécuter des projets ?
Vous pouvez créer et exécuter un travail à l’aide de l’interface utilisateur des travaux, de l’interface CLI Databricks ou en appelant l’API Travaux. À l’aide de l’IU ou de l’API, vous pouvez réparer et réexécuter un projet qui a échoué ou qui a été annulé. 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).
Si vous préférez une approche Infrastructure-as-code (IaC) pour configurer et orchestrer vos projets, utilisez des DAB. Les regroupements peuvent contenir des définitions YAML de projets et de tâches, sont gérés à l’aide de la CLI Databricks, et peuvent être partagés et exécutés dans différents espaces de travail cible (comme le développement, la simulation et la production). Pour en savoir plus sur l’utilisation des DAB pour configurer et orchestrer vos projets, consultez DAB.
Pour plus d’informations sur l’utilisation de la CLI Databricks, consultez l’article Qu’est-ce que la CLI Databricks ? Pour en savoir plus sur l’utilisation de l’API Travaux, consultez API Travaux.
Quelle est la configuration minimale nécessaire pour un travail ?
Tous les travaux sur Azure Databricks exigent ce qui suit :
- Code source (comme un notebook Databricks) qui contient la logique à exécuter.
- Une ressource de calcul pour exécuter la logique. La ressource de calcul peut être un calcul serverless, un calcul des travaux classique ou un calcul à usage général. Consultez Configurer le calcul pour les projets.
- Une planification spécifiée pour le moment où le projet doit être exécuté. Si vous le souhaitez, vous pouvez omettre de définir une planification et déclencher le projet manuellement.
- Nom unique.
Remarque
Si vous développez votre code dans des notebooks Databricks, vous pouvez utiliser le bouton Planifier pour configurer ce notebook en tant que travail. Consultez Créer et gérer des tâches de notebooks planifiées.
Qu’est-ce qu’une tâche ?
Une tâche représente une unité de logique à exécuter comme étape au projet. Les tâches peuvent varier en complexité et peuvent comprendre les éléments suivants :
- Un notebook
- Un JAR
- Requêtes SQL
- Un pipeline DLT
- Un autre travail
- Tâches de flux de contrôle
Vous pouvez contrôler l’ordre d’exécution des tâches en spécifiant des dépendances entre elles. Vous pouvez configurer les tâches pour qu’elles s’exécutent de façon séquentielle ou parallèle.
Les travaux interagissent avec les informations d’état et les métadonnées de tâches, mais l’étendue de tâche est isolée. Vous pouvez utiliser les valeurs d’une tâche pour partager un contexte entre des tâches planifiées. Consultez Utiliser les valeurs de tâche pour transférer des informations entre les tâches.
Quelles sont les options de flux de contrôle disponibles pour des travaux ?
Lors de la configuration des projets et des tâches dans les projets, vous pouvez personnaliser les paramètres qui contrôlent l’exécution de l’ensemble du projet et des tâches individuelles. Ces options sont :
- Déclencheurs
- Retries
- Exécuter en cas de tâches conditionnelles
- Tâches conditionnelles If/else
- Pour chaque tâche
- Seuils de durée
- Paramètres de concurrence
Types de déclencheurs
Vous devez spécifier un type de déclencheur quand vous configurez un travail. Vous pouvez choisir parmi les types de déclencheur suivants :
Vous pouvez également choisir de déclencher votre projet manuellement, mais cela est principalement réservé à des cas d’utilisation spécifiques comme :
- Vous utilisez un outil d’orchestration externe pour déclencher des projets à l’aide d’appels d’API REST.
- Vous avez un projet qui s’exécute rarement et qui nécessite une intervention manuelle pour la validation ou la résolution des problèmes de qualité des données.
- Vous exécutez une charge de travail ayant uniquement besoin d’être exécutée une ou très peu de fois, comme une migration.
Consultez les Types de déclencheurs pour les projets Databricks.
Nouvelle tentatives
Les nouvelles tentatives indiquent le nombre de fois qu’une tâche particulière doit être réexécutée si elle s’est soldée par un message d’erreur. Les erreurs sont souvent temporaires et résolues par le redémarrage. Certaines caractéristiques d’Azure Databricks, comme l’évolution des schémas avec Structured Streaming, supposent que vous exécutiez des projets avec des nouvelles tentatives de réinitialisation de l’environnement et de facilitation de déroulement d’un flux de travail.
Si vous spécifiez de nouvelles tentatives pour une tâche, la tâche redémarre jusqu’au nombre de fois spécifié si elle rencontre une erreur. Toutes les configurations de projet ne prennent pas en charge les nouvelles tentatives de tâche. Consultez Définir une stratégie de nouvelle tentative.
Lors d’une exécution en mode de déclencheur continu, Databricks effectue automatiquement de nouvelles tentatives avec un backoff exponentiel. Voir Comment les échecs sont-ils gérés pour les travaux continus ?.
Exécuter en cas de tâches conditionnelles
Vous pouvez utiliser le type de tâche Exécuter si afin de spécifier des éléments conditionnels pour des tâches ultérieures basées sur le résultat d’autres tâches. Vous ajoutez les tâches de votre travail et des tâches dépendantes en amont. Selon l’état de ces tâches, vous pouvez configurer une ou plusieurs tâches en amont à exécuter. Les travaux prennent en charge les dépendances suivantes :
- Réussite totale
- Au moins une réussite
- Aucun échec
- Terminé
- Au moins un échec
- Échec total
Consulter Configurer les dépendances de tâche
Tâches conditionnelles If/else
Vous pouvez utiliser le type de tâche If/else pour spécifier des éléments conditionnels en fonction d’une certaine valeur. Consultez Ajouter une logique d’embranchement à votre projet avec la tâche If/else.
Les projets prennent en charge taskValues
que vous définissez dans votre logique et vous permettent de renvoyer les résultats d’un calcul ou d’un état d’une tâche vers l’environnement des projets. Vous pouvez définir des conditions If/else par rapport à taskValues
, des paramètres de travail ou des valeurs dynamiques.
Azure Databricks prend en charge les opérantes suivants pour les éléments conditionnels :
==
!=
>
>=
<
<=
Voir aussi :
- Utiliser les valeurs de tâche pour transférer des informations entre les tâches
- Qu’est-ce qu’une référence de valeur dynamique ?
- Paramètres de projets définis
Pour chaque tâche
Utilisez la tâche For each
pour exécuter une autre tâche dans une boucle, en transférant un ensemble différent de paramètres à chaque itération de la tâche.
L’ajout de la tâche For each
à un travail nécessite la définition de deux tâches : la tâche For each
et une tâche imbriquée. La tâche imbriquée est la tâche à exécuter pour chaque itération de la tâche For each
et constitue l’un des types de tâches standard de projets Databricks. Plusieurs méthodes sont prises en charge pour transmettre des paramètres à la tâche imbriquée.
Consultez Exécuter une tâche de travail Azure Databricks paramétrée dans une boucle.
Seuil de durée
Vous pouvez spécifier un seuil de durée pour envoyer un avertissement ou arrêter une tâche ou un projet si une durée spécifiée est dépassée. Les exemples des moments où vous voudrez peut-être configurer ce paramètre incluent les suivants :
- Vous avez des tâches qui ont tendance à se bloquer dans un état suspendu.
- Vous devez avertir un ingénieur en cas de dépassement d’un SLA pour un workflow.
- Pour éviter des coûts inattendus, vous souhaitez faire échouer un projet configuré avec un grand groupement.
Consultez Configurer une durée d’achèvement attendue ou un délai d’expiration pour un projet et Configurer une durée d’achèvement attendu ou un délai d’expiration pour une tâche.
Concurrence
La plupart des travaux sont configurés avec la concurrence par défaut de 1 travail simultané. Cela signifie que si l’exécution d’un travail précédent n’est pas terminée au moment où un nouveau travail doit être déclenché, l’exécution du travail suivant est ignorée.
Il existe des cas d’utilisation pour une concurrence augmentée, mais la plupart des charges de travail n’exigent pas la modification de ce paramètre.
Pour plus d’informations sur la configuration de la concurrence, consultez Paramètres de mise en file d’attente et de concurrence des projets Databricks.
Comment puis-je monitorer des travaux ?
L’IU des projets vous permet de voir les exécutions de projet, notamment les exécutions en cours. Consultez Surveillance et observabilité des projets Databricks.
Vous pouvez recevoir des notifications lorsqu’un travail ou une tâche démarre, se termine ou échoue. Vous pouvez envoyer des notifications à une ou plusieurs adresses e-mail ou destinations système. Consultez Ajouter des notifications par e-mail et système pour les événements de travail.
Les tables système incluent un lakeflow
schéma dans lequel vous pouvez afficher les enregistrements relatifs à l’activité du travail dans votre compte. Consultez Référence sur la table système des travaux.
Vous pouvez également joindre les tables système des travaux avec des tables de facturation pour surveiller le coût des travaux sur votre compte. Consultez Surveiller les coûts du travail avec les tables système.
Limites
Les limites suivantes existent :
- Un espace de travail est limité à 2 000 exécutions de tâches 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.
- Un espace de travail peut contenir jusqu’à 12 000 travaux enregistrés.
- Un travail peut contenir jusqu’à 100 tâches.
Comment puis-je gérer des workflows de manière programmatique ?
Databricks dispose d’outils et d’API qui vous permettent de planifier et d’orchestrer vos flux de travail de manière programmatique, y compris ce qui suit :
- Interface CLI Databricks
- Packs de ressources Databricks
- Extension Databricks pour Visual Studio Code
- SDK Databricks
- API REST Travaux
Pour plus d’informations sur les outils de développement, consultez Outils de développement.
Orchestration de workflow avec Apache AirFlow
Vous pouvez utiliser Apache Airflow pour gérer et planifier vos workflows de données. Avec Airflow, vous définissez votre workflow dans un fichier Python et Airflow gère la planification et l’exécution du workflow. Consultez Orchestrer des travaux Azure Databricks avec Apache Airflow.
Orchestration de workflow avec Azure Data Factory
Azure Data Factory (ADF) est un service d’intégration des données cloud permettant de composer des services de stockage, de déplacement et de traitement des données dans des pipelines de données automatisés. Vous pouvez utiliser ADF pour orchestrer un travail Azure Databricks dans le cadre d’un pipeline ADF.
ADF fournit également la prise en charge prédéfinie de l’exécution de notebooks Databricks, de scripts Python ou de package de code dans des JAR dans un pipeline ADF.
Pour savoir comment exécuter un notebook Databricks dans un pipeline ADF, consultez Exécuter un notebook Databricks avec l’activité Databricks Notebook dans Azure Data Factory, puis Transformer les données en exécutant un notebook Databricks.
Pour savoir comment exécuter un script Python dans un pipeline ADF, consultez Transformer des données en exécutant une activité Python dans Azure Databricks.
Pour savoir comment exécuter du package de code dans un fichier JAR dans un pipeline ADF, consultez Transformer des données en exécutant une activité JAR dans Azure Databricks.