Dépanner et réparer les défaillances de Job
Supposons que vous ayez été averti(e) (par exemple, via une notification par e-mail, une solution de monitoring, ou dans l'interface utilisateur de Lakeflow Jobs) qu'une tâche a échoué lors de l'exécution de votre Job. Les étapes de cet article fournissent des conseils pour vous aider à identifier la cause de l'échec, des suggestions pour résoudre les problèmes que vous rencontrez, et à réparer les exécutions de job ayant échoué.
Identifier la cause de l’échec
Pour trouver la tâche ayant échoué dans l'interface utilisateur de Lakeflow Jobs :
-
Cliquez sur
Jobs et Pipelines dans la barre latérale.
-
Dans la colonne **Nom**, cliquez sur un nom de job. La tab Shows active runs and completed runs, including any failed runs. La vue matricielle dans la **tab** **Runs** affiche un historique des exécutions pour le Job, y compris les exécutions réussies et infructueuses pour chaque tâche du Job. Une exécution de tâche peut être infructueuse parce qu'elle a échoué ou a été ignorée parce qu'une tâche dépendante a échoué. En utilisant la vue matricielle, vous pouvez rapidement identifier les échecs de tâche pour votre exécution de job.

-
Passez la souris sur une tâche échouée pour voir les métadonnées associées. Ces métadonnées incluent les dates de start et de fin, l'état, la durée, les détails du cluster et, dans certains cas, un message d'erreur.
-
Pour aider à identifier la cause de l'échec, cliquez sur la tâche ayant échoué. La page Détails de l'exécution de la tâche apparaît, affichant la sortie de la tâche, le message d'erreur et les métadonnées associées.
Corrigez la cause de l'échec.
Votre tâche a peut-être échoué pour plusieurs raisons, par exemple, un problème de qualité des données, une mauvaise configuration ou des ressources de compute insuffisantes. Voici les étapes suggérées pour corriger certaines causes courantes d'échecs de tâches :
-
Si l'échec est lié à la configuration de la tâche, cliquez sur Modifier la tâche . La configuration de la tâche s'ouvre dans un nouveau tab. Mettez à jour la configuration de la tâche selon les besoins, puis cliquez sur Enregistrer la tâche .
-
Si le problème est lié aux ressources de cluster, par exemple, des instances insuffisantes, plusieurs options s'offrent à vous :
- Si votre Job est configuré pour utiliser un cluster de Job, envisagez d’utiliser un cluster polyvalent partagé.
- Modifiez la configuration du cluster. Cliquez sur **Modifier la tâche**. Dans le volet Détails du Job , sous Compute , cliquez sur Configurer pour configurer le cluster. Vous pouvez modifier le nombre de Workers, les types d'instance ou d'autres options de configuration du cluster. Vous pouvez également cliquer sur Échanger pour passer à un autre cluster disponible. Pour vous assurer d'utiliser au mieux les ressources disponibles, examinez les meilleures pratiques pour la configuration des clusters.
- Si nécessaire, demandez à un administrateur d'augmenter les quotas de ressources dans le compte cloud et la région où votre workspace est déployé.
-
Si l'échec est dû au dépassement du nombre maximal d'exécutions simultanées, l'une des options suivantes :
- Attendez que d'autres exécutions se terminent.
- Cliquez sur Modifier la tâche . Dans le volet **Détails du Job**, cliquez sur **Modifier les exécutions simultanées**, entrez une nouvelle valeur pour **Maximum d'exécutions simultanées**, puis cliquez sur **Confirmer**.
Dans certains cas, la cause d'un échec peut se situer en amont de votre Job ; par exemple, une source de données externe est indisponible. Vous pouvez toujours profiter de la fonctionnalité de réparation d'exécution couverte dans la section suivante une fois le problème externe résolu.
Réexécuter les tâches échouées et ignorées
Après avoir identifié la cause de l’échec, vous pouvez réparer les jobs multi-tâches échoués ou annulés en exécutant uniquement le sous-ensemble de tâches infructueuses et toutes les tâches dépendantes. Étant donné que les tâches réussies 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 pour récupérer des exécutions de job infructueuses.
Vous pouvez modifier les paramètres du job ou de la tâche avant de réparer l'exécution du job. Les tâches échouées sont réexécutées avec les paramètres actuels du job et de la tâche. Par exemple, si vous modifiez le chemin d'accès à un Notebook ou à un paramètre de clusters, la tâche est réexécutée avec le Notebook ou les paramètres de clusters mis à jour.
Une réparation réexécute chaque tâche infructueuse depuis le début. Lakeflow Jobs ne rend pas les tâches idempotentes. Par conséquent, si une tâche a écrit une partie de sa sortie avant d'échouer, sa réexécution peut dupliquer ces données. La sécurité d'une réparation dépend de la logique propre à la tâche. Avant de réparer une exécution, examinez ce que chaque tâche écrit et utilisez des opérations idempotentes (comme l'écrasement ou Merge plutôt que l'ajout) là où les données en double posent problème.
Consultez l'historique de toutes les exécutions de tâche sur la page Détails de l'exécution de la tâche .
- Si une ou plusieurs tâches partagent un cluster de Job, une exécution de réparation crée un nouveau cluster de Job. Par exemple, si l'exécution initiale a utilisé le cluster de Job
my_job_cluster, la première exécution de réparation utilise le nouveau cluster de Jobmy_job_cluster_v1, ce qui vous permet de voir facilement le cluster et les paramètres de cluster utilisés par l'exécution initiale et les exécutions de réparation. Les paramètres pourmy_job_cluster_v1sont les mêmes que les paramètres actuels pourmy_job_cluster. - La réparation n'est prise en charge qu'avec les Jobs qui orchestrent deux tâches ou plus. Pour réexécuter un Job à tâche unique ayant échoué, Trigger-le à nouveau avec Exécuter maintenant . Consultez Trigger l'exécution d'un seul Job.
- La valeur **Duration** affichée dans la **tab** **Runs** inclut le temps écoulé entre le **start** de la première exécution et la fin de la dernière exécution de réparation. Par exemple, si une exécution a échoué deux fois et a réussi lors de la troisième exécution, la durée inclut le temps des trois exécutions.
- Les réparations utilisent l'état d'exécution de chaque tâche pour décider quoi réparer, et non son état désactivé. Pour forcer l'exécution d'une tâche désactivée lors d'une réparation, incluez-la dans
rerun_tasksdans la demande de réparation. Voir Tâches désactivées dans les Lakeflow Jobs.
Pour réparer une exécution de job échouée :
- Cliquez sur le link pour l’exécution échouée dans la colonne **Start time** du tableau des exécutions de job ou cliquez sur l’exécution échouée dans la vue matricielle. La page Détails d'exécution du job s’affiche.
- Cliquez sur **Réparer l'exécution**. La boîte de dialogue **Réparer l'exécution du job** apparaît, listant toutes les tâches infructueuses et toutes les tâches dépendantes qui sont réexécutées.
- Pour ajouter ou modifier des parameters pour les tâches à réparer, saisissez les parameters dans la boîte de dialogue Réparer l'exécution du Job . Les parameters que vous saisissez dans la boîte de dialogue Exécution du Job de réparation remplacent les valeurs existantes. Lors des exécutions de réparation ultérieures, vous pouvez ramener un paramètre à sa valeur d'origine en effaçant la clé et la valeur dans la boîte de dialogue **Exécution du job de réparation**.
- Cliquez sur Réparer l'exécution dans la boîte de dialogue Réparer l'exécution du Job .
- Une fois la réparation terminée, la vue matricielle est mise à jour avec une nouvelle colonne pour l'exécution réparée. Toutes les tâches ayant échoué qui étaient en rouge devraient maintenant être en vert, indiquant une exécution réussie pour l'ensemble de votre job.
Afficher et gérer les défaillances des jobs continus
Lorsque les échecs consécutifs d'un job continu dépassent un threshold, Lakeflow Jobs utilise l'interruption exponentielle pour relancer le job. Lorsqu'un job est en état d'interruption exponentielle, un message dans le volet Détails du job affiche des information, notamment :
- Le nombre d'échecs consécutifs.
- La période pendant laquelle le job doit s'exécuter sans erreur pour être considéré comme réussi.
- Le temps avant la prochaine nouvelle tentative si aucune exécution n'est actuellement active.
Pour annuler l'exécution active, Reset la période de nouvelle tentative et start une nouvelle exécution de Job, cliquez sur Redémarrer l'exécution .
Utiliser Genie Code pour diagnostiquer les erreurs
Genie Code aide à diagnostiquer les erreurs dans les Jobs.
Pour diagnostiquer un Job avec Genie Code :
- Ouvrez le Job ayant échoué à partir de l'interface utilisateur des Jobs.
- Sélectionnez **Diagnostiquer l'erreur**.
