Exécuter des jobs en continu
Utilisez le mode continu pour planifier des charges de travail à exécuter en continu. Databricks recommande d’utiliser le mode continu pour les charges de travail de streaming permanentes.
Le mode continu remplace les recommandations existantes pour les charges de travail Structured Streaming afin de configurer des Jobs avec une politique de nouvelle tentative illimitée et un maximum d'une exécution concurrente.
Le comportement des Jobs continus changera dans une prochaine version. Pour plus de détails, consultez Changements de comportement pour les Jobs continus et les pipelines.
Les tâches avec des planifications continues sur le calcul serverless fonctionnent avec des déclencheurs Structured Streaming bornés, tels que Trigger.AvailableNow. Le planificateur de Job redémarre la tâche une fois qu'elle est terminée, et le point de contrôle de streaming garantit qu'aucune donnée n'est retraitée.
Les Trigger basés sur le temps, tels que Trigger.ProcessingTime et Trigger.Continuous, ne sont pas pris en charge sur le compute Serverless. Voir les limites du compute Serverless.
Pour le streaming continu avec des exigences de faible latence sur le compute serverless, utilisez le mode de pipeline déclenché ou continu en mode continu.
Configurez le job pour qu'il s'exécute en mode continu
Pour configurer un Job afin qu'il s'exécute en mode continu, procédez comme suit :
-
Dans la barre latérale de votre workspace Databricks, cliquez sur Tâches & Pipelines .
-
Facultativement, sélectionnez les filtres **Jobs** et **Appartenant à moi**.
-
Cliquez sur le **Link** **Nom** de votre Job.
-
Cliquez sur **Ajouter un Trigger** dans le volet **Détails du Job**, sélectionnez **Continu** dans **Type de Trigger**
-
Vous pouvez éventuellement sélectionner un **mode de nouvelle tentative de tâche**. Vous pouvez choisir de relancer **En cas d'échec** pour relancer les tâches échouées au sein d'un job, ou de sélectionner **Jamais** pour relancer uniquement au niveau du job. Le **mode de nouvelle tentative de tâche** est default sur **En cas d'échec** pour le mode continu.
Pour un Job déjà existant, vous devrez peut-être d'abord cliquer sur Configurer le mode de nouvelle tentative , puis sélectionner un mode de nouvelle tentative de tâche.
- Cliquez sur Enregistrer .
Pour arrêter un job continu, cliquez sur le bouton Pause . Cliquez sur **Reprendre** pour redémarrer le job en mode continu.
- Il ne peut y avoir qu'une seule instance en cours d'exécution d'un Job continu.
- Un délai existe entre la fin d'une exécution et le début d'une nouvelle exécution. Ce délai devrait être inférieur à 60 secondes.
- Vous ne pouvez pas utiliser les dépendances de tâche avec un job continu.
- Vous ne pouvez pas utiliser les stratégies de réessai dans un job continu. Au lieu de cela, les Jobs continus réessayent automatiquement l'intégralité du Job en cas d'échec à l'aide d'un algorithme d'interruption exponentielle.
- Vous pouvez également configurer des nouvelles tentatives au niveau des tâches en définissant le mode de nouvelle tentative de tâche sur En cas d'échec .
- Sélectionnez Exécuter maintenant pour Trigger une nouvelle exécution de Job sur un Job continu mis en pause.
- Pour que votre job continu prenne en compte une nouvelle configuration, cliquez sur Redémarrer l'exécution pour redémarrer l'exécution avec la configuration mise à jour. Vous pouvez également le faire par programmation en transmettant l'ID de job à la requête run-now dans l'API Jobs.
Gestion des échecs pour les jobs continus
Les échecs sont gérés à l’aide d’un algorithme de backoff exponentiel .
Lorsque le mode de nouvelle tentative de tâche est défini sur En cas d'échec , les tâches échouées sont relancées avec un délai d'augmentation exponentielle jusqu'à ce que le nombre maximal de nouvelles tentatives autorisées soit atteint (trois pour un job à tâche unique). Une fois le nombre maximal de nouvelles tentatives atteint, l'exécution est annulée et une nouvelle exécution est Trigger. Pour les jobs comportant plusieurs tâches, une tâche échouée déclenche une nouvelle exécution s'il n'y a pas d'autres tâches en cours d'exécution, ou si toutes les autres tâches non terminées sont également dans un état d'échec ou de nouvelle tentative.
Les échecs consécutifs au niveau du Job sont également gérés à l'aide d'un backoff exponentiel, ce qui permet aux Jobs continus de s'exécuter sans interruption et de retrouver un état sain lorsque des échecs récupérables se produisent.
Lorsqu'un Job continu dépasse le threshold autorisé de pannes consécutives, la section suivante décrit la gestion des exécutions de Job ultérieures :
- Le job est redémarré après une période de nouvelle tentative définie par le système.
- Si la prochaine exécution de Job échoue, la période de nouvelle tentative est augmentée, et le Job est redémarré après cette nouvelle période de nouvelle tentative.
- Pour chaque échec d'exécution de Job ultérieur, la période de nouvelle tentative est augmentée jusqu'à une période de nouvelle tentative maximale définie par le système. Après avoir atteint la période maximale de réessai, le Job continue d'être relancé en utilisant la période maximale de réessai. Il n'y a aucune limite au nombre de nouvelles tentatives pour un Job continu.
- Si le job s'exécute correctement et start une nouvelle exécution, ou si l'exécution dépasse un threshold sans échec, le job est considéré comme sain et la séquence de temporisation est Reset.
Vous pouvez redémarrer un job continu en état de backoff exponentiel dans l'interface utilisateur des Jobs ou en transmettant l'ID du job à la requête run-now dans l'API Jobs.