fbpx

Orchestration des Jobs, gestion des erreurs et des logs

Cet article sur l'orchestration des jobs, la gestion des erreurs et des logs, s'inscrit dans une suite de tutoriel Talend dédiés aux premiers pas dans le studio Data Integration. Dans une première partie, nos experts Talend vous expliquent comment orchestrer vos sous-job. Ils vous expliquent ensuite comment assurer la gestion des erreurs, des stats et des logs. Enfin vous découvrirez comment orchestrer plusieurs Jobs Talend. 




Orchestration des sous-jobs

 

Dans cette première partie, nous allons voir découvrir comment orchestrer l'exécution des sous-jobs et initialiser des composants en début et fin de job. 

Pour commencer, réouvrez votre Job Générateur précédemment créé dans notre tutoriel Talend sur la création et l'exécution d'un Job simple.

  


Aperçu de l'exécution des sous-job Talend par leur ordre de création

Par défaut, les sous-jobs s’exécutent par ordre de création (peu importe leur positionnement dans le Designer).

Modifiez vos 3 tRowGenerator pour augmenter le nombre de lignes générées à 10 000 pour avoir le temps de voir les sous-jobs s’exécuter.


Modification du nombre de ligne générées par tRowGenerator sous Talend

Lancez votre Job. Si vous avez créé les éléments dans le même ordre que décris dans ce cahier d’exercices, votre sous-job meublant la table personne devrait être le 1er à s’exécuter, puis voiture et enfin personne_voiture.

Il peut être envisageable parfois de lancer les sous-jobs en parallèle (si bien sûr ils n’ont pas d’impacts les uns sur les autres). Pour cela, rendez-vous dans l’onglet Job puis Extra.

Cochez la case exécution multi thread.


Onglet Job Extra : cochez la case exécution multi thread.

Relancez votre Job. Vous pouvez voir que vos sous-jobs s’effectuent en parallèle.

Décochez la case.

Nous allons mettre en pratique les différents outils d’ordonnancement des sous-jobs.

Nous allons tout d’abord séparer la connexion à notre base de données des composants permettant d’écrire dedans. Cette connexion devra se faire avant que les sous-jobs se lancent.

Depuis vos métadonnées, faîtes glisser la connexion à votre base de données et choisissez de créer un tDBConnection.


Connexion à la base de données depuis les métadonnées du studio Talend

Placez ce nouveau composant au tout début de votre Job.


tDBConnection en début de Job Talend

Allez ensuite dans chacun de vos tDBOutput déjà créé, cochez la case Utiliser une connexion existante et sélectionnez votre base de données dans la liste.


Utiliser une connexion existante dans un tDBOutput sous Talend

Ce composant permet de centraliser la connexion à une base, ainsi vous n’avez plus que la table à spécifier à chaque fois.

A la suite de votre dernier sous-job, ajoutez un tDBCommit puis un tDBClose en sélectionnant pour les 2 composants le bon type de base de données et en sélectionnant ensuite votre composant de connexion. Dans le tDBCommit, décochez la case indiquant de fermer la connexion, ce rôle étant dédié au tDBClose.


Aojut d'un tDBCommit et d'un tDBClose à un sous-job Talend

Nous allons ensuite faire en sorte que nos sous-jobs s’effectuent dans l’ordre suivant :

Connexion > Personne > Voiture > personne_voiture > Commit > Close

Pour cela faîtes un clic droit sur votre composant tDBConnection puis Trigger et cliquez sur On Subjob Ok et liez-le au premier composant de votre sous-job suivant.


tDBConnection : trigger et clic sur On Subjob Ok dans le studio Talend

Vous pouvez voir un nouveau lien entre vos 2 sous-jobs.


Aperçu d'un nouveau lien entre deux sous-jobs Talend

Ce lien signifie comme son nom l’indique que le sous-job ne démarrera que si le précédent s’est conclu avec succès.

Attention, un lien On SubJob Ok ne peut relier entre eux que les premiers composants de chaque sous-job (chaque premier composant représentant en quelque sorte son sous-job).

Liez tous vos sous-jobs avec cette liaison selon l’ordre établi au-dessus.


Liaison des sous-jobs avec le composant on subjob ok dans le studio Talend

Lancez votre Job et observez l’ordre d’exécution de vos sous-jobs.

A chaque passage réussi dans un On Subjob Ok, vous devriez voir apparaître un  OK à côté de celui-ci.

Maintenant, nous allons séparer la connexion et la fermeture de la base de données du reste des opérations. Nous souhaitons que ces deux composants s’exécutent peu importe le déroulement du Job par la suite.

Ajouter un composant tPrejob avant votre tDBConnection et supprimez le lien OnSubjobOk reliant ce dernier au sous-job suivant.


Séparation de la connexion et la fermeture de la base de données avec un composant tPrejob

Vous pouvez remarquer la couleur orange de ce composant. Il diffère des autres composants car il n’a pas de propriété configurable et il possède une particularité : il sera exécuté en tout premier quel que soit le contenu de votre Job.

Très utile pour l’instanciation de connexion à des bases de données ou encore le chargement préalable de contextes.

Faîtes un clic droit sur ce composant puis Trigger et cliquez sur On Component Ok et liez votre tDBConnection.


Composant tPrejob Talend : trigger et cliquer sur On Component Ok pour lier au tDBConnection

Vous remarquerez que c’est la seule liaison possible partant de ce composant. La liaison On Component Ok existe cependant également sur les autres composants et est tout à fait utilisable. Elle signifie simplement « si le composant est correctement chargé ».

Comme il existe un tPrejob, il existe son opposé, le tPostjob, qui sera exécuté en toute fin de Job peu importe le contenu du Job (sauf en cas de sortie de la JVM).

Ajoutez ce composant à la fin de votre Job puis supprimez le OnSubjobOk liant votre tDBClose. Liez ensuite votre tPostjob à votre tDBClose.

Votre job complet devrait ressembler à ceci.


Orchestration des sous-jobs dans le studio Talend Data Integration

Lancez votre Job pour vous assurer de son fonctionnement.

Vous aurez remarqué l’existence des liaisons OnSubjobError et OnComponentError que nous n’utiliserons pas dans ce cas pratique mais qui permettent comme leur nom l’indique de déclencher des actions spécifiques en cas d’erreur.

 

Gestion des erreurs

 

Dans la deuxième partie de ce tutoriel Talend, nos experts vous expliquent comment lever des erreurs et les récupérer pour traitement.

Gardez votre Job Generateur.

Remettez à 100 le nombre de lignes générées par vos 3 tRowGenerator.


Modification du nombre de ligne générées par tRowGenerator sous Talend à 100 ligne

Il existe des composants permettant de lever des avertissements et des erreurs.

Ajoutez un tWarn à la suite de votre tLogRow de rejets de personne et liez-le avec un flux Main.

Cela signifie que pour chaque ligne en erreur, le composant sera appelé.


Ajout d'un tWarn à la suis d'un tLogRow de rejet de personne et liaison avec un flux Main

Observez ses propriétés. Vous pouvez choisir le message à envoyer, son code de retour ainsi que sa priorité (son type de message).


Apercu des propriétés du composant tWarn : choix du message à envoyer

Pour le rejet des voitures nous allons utiliser un tDie.

Vous pouvez voir que les propriétés sont les mêmes que le tWarn, si ce n’est que le tDie quand il est appelé stop l’exécution du Job. Seul le tPostjob sera exécuté. Il peut également permettre de sortir immédiatement de la JVM en cochant la case présente dans ses paramètres avancés (laissez-la décochée).


Utilisation du composant tDie dans le studio Talend Data Integration

Nous allons ensuite faire exprès de générer des rejets.

Pour cela modifiez d’abord le schéma de votre composant tDBOutput de votre table personne et mettez la longueur du nom à 5.

Propagez les modifications.


Modification du schéma du composant tDBOutput dans le studio Talend Data Integration

Modifiez ensuite le schéma de votre tDBOutput de votre table voiture et mettez la longueur de la marque à 2.

Fermez et propagez les modifications.


Modification du schéma du composant tDBOutput dans le studio Talend

Lancez votre Job et vérifiez d’avoir des lignes en rejet.


Aperçu des lignes en rejet lors du lancement du Job Talend

Pour capturer ces avertissements, nous avons besoin d’ajouter un composant nommé tLogCatcher.

Ajoutez-le dans votre Job sans le lier à un autre composant. Le tLogCatcher est autonome et permet de récupérer en continu les avertissements et les erreurs durant l’exécution du Job.


Ajout d'un composant tLogCatcher dans le studio Talend Data Integration

Observez ses propriétés ainsi que son schéma.


Aperçu du schéma et des propriétés du composant tLogCatcher dans le studio Talend Data Integration

Nous pouvons choisir quels types d’erreur nous voulons capturer : ici sélectionnez uniquement les tWarn.

Son schéma est très complet et nous permet d’obtenir toutes les informations relatives au Job, mais aussi le message et code d’erreur définis auparavant dans le composant d’avertissement.

Ajoutez un tLogRow pour afficher les lignes capturées.

Répétez l’opération avec un autre tLogCatcher ne récupérant que les tDie.


Choix du type d'erreur à capturer dans les propriétés du composant tLogCatcher

Lancez votre Job et observez la console.

Vous devriez avoir plusieurs lignes pour votre tWarn.


Observation de la console suite à l'exécution du Job Talend : Aperçu des lignes du tWarn

Et une ligne pour votre tDie.


Observation de la console suite à l'exécution du Job Talend : Aperçu de la ligne du tDie

Gestion des stats et des logs

 

Dans cette troisième partie de notre tutoriel sur l'orchestration des jobs, la gestion des erreurs et des logs, nous allons découvrir comment enregistrer les logs dans une base de données.

Le monitoring d’un Job Talend passe également par la gestion des logs.

Toujours dans votre Job Generateur, rendez-vous dans la vue Job puis dans l’onglet Stats et Logs. Si elle est cochée, décochez la case Utiliser les paramètres du projet puis cochez les 3 cases :

  • Utiliser les statistiques
  • Utiliser les logs
  • Utiliser les volumes

Aperçu de la vue Job, onglet Stats et Logs dans le studio Talend Data Integration

Ici vous pouvez définir les données à récupérer. Les statistiques concernent principalement les dates de début et fin du job. Les logs concernent les avertissements et erreurs que vous générerez avec vos tWarn et tDie. Les volumes concernent le nombre de données qui transitent.

Vous pouvez voir que vous avez le choix de l’emplacement de l’affichage de ces données : console, fichier ou base de données.

Ces données sont configurables sur chaque Job, mais il est possible d’appliquer le même fonctionnement pour tous les Jobs du projet.

Ouvrez les propriétés du projet.


Editer les propriétés d'un projet dans le studio Talend Data Integration

Allez dans Paramètres du Job > Stats & Logs puis cochez à nouveau les 3 cases.


Paramètres d'un Job Talend : onglet Stats et Logs

Cochez ensuite « Dans la base de données » et utilisez votre base depuis votre référentiel.

Choisissez également 3 noms de table qui contiendront vos données.


Paramètrages d'un Job Talend : Utilisation des statistiques, des logs et des volumes

Pour terminer, cliquez sur « Apply and Close ». Si on vous propose de « mettre à jour pom pour tous les Jobs », cliquez sur Oui, cela permettra d’appliquer la modification aux Jobs utilisant les paramètres du projet.

Acceptez également d’ajouter les contextes de votre base de données.


Mise à jour pom de tous les jobs sous Talend Data Integration

De retour dans votre Job Generateur, cliquez sur le bouton « Recharger depuis les paramètres du projet » et acceptez d’écraser les données  actuelles.

Vous pouvez voir que votre Job utilise désormais les paramètres définis plus tôt.


Recharger les paramètres d'un projet dans le Studio Talend Data Integration

Rendez-vous sur la liaison entre votre fichier et votre table personne puis ouvrez l’onglet des Paramètres avancés.

Cochez la case « Monitorer cette connexion ».


Aperçu des paramètres avancés de liaison dans le Studio Talend Data Integration

Lancez votre Job.

Rendez-vous dans votre base de données, vous devriez apercevoir vos 3 nouvelles tables.


Aperçu des tables dans une base de données sous Talend

Dans flow vous pouvez voir le flux que vous avez monitoré.


Aperçu du flux monitoré dans Flow sous Talend Data Integration

Dans logs vous pouvez voir vos tWarn et tDie.


Aperçu du tWarn et du tDie dans logs sous Talend Data Integration

Dans stats vous avez le début et la fin de votre job.


Aperçu du début et de la fin du job dans stats sous Talend Data Integration

Versionnez votre Job puis corrigez les schémas personne et voiture en remettant la longueur des champs nom et marque à 50 pour ne plus générer d’erreur.

A partir de maintenant à chaque création de Job, Talend vous proposera par défaut d’inclure le contexte de votre base de données puisqu’elle sera utilisée pour les logs.

 

Orchestration de plusieurs Jobs

 

Dans cette dernière partie de notre tutoriel Talend, nos experts vous expliquent comment exécuter plusieurs Jobs à la suite depuis un unique Job.

Créez d'abord un nouveau Job nommé « MasterJob ».

Depuis votre liste de Jobs, faîtes glisser votre Job Generateur sur le Designer Talend.


Faire glisser un job Talend sur le Designer dans le studio Data Integration

Observez l’élément créé.


Aperçu du composant tRunJob dans le studio Talend Data Integration

Il s’agit d’un composant nommé tRunJob qui permet comme son nom l’indique d’exécuter un Job. Il s’agit d’un composant ordinaire, nous aurions donc pu l’ajouter sur le Designer puis sélectionner ensuite à quel Job le faire correspondre.

Il est possible de choisir en quelle version l’utiliser (si vous avez versionné votre Job vous devriez avoir toutes ses versions disponibles) mais aussi son contexte.

Il est d’ailleurs possible de lui transmettre des variables de contexte provenant du MasterJob en cochant la case « transmettre tout le contexte », cependant les variables de contextes peuvent seulement être surchargées dans les jobs fils, il n’est pas possible de les créer à la volée, et donc être déjà présente dans les jobs fils.

Nous n’en ferons pas l’exemple ici, mais il est possible de transmettre des données au Job enfant et inversement en lui définissant un schéma et en utilisant des composants bien (ex : tBufferOutput).

De la même manière, faîtes glisser votre Job EtatComplet à droite de votre Generateur puis reliez les avec un OnSubJobOk.


Relier deux jobs Talend avec un composant OnSubJobOk

Exécutez votre MasterJob, vous devriez voir les 2 Jobs s’exécuter l’un après l’autre.


Sur le même sujet...


Utilisation des contextes dans Talend Data Integration

Apprenez à utiliser correctement les variables de contexte dans vos Jobs, créer des contextes et des groupes de contextes dans le Studio Talend.

Découvrir

Utiliser les composant tMap dans Talend Data Integration

Découvrez toutes les fonctionnalités du composant tMap : apprenez à utiliser les filtres de ligne et de colonne, le remplacement de texte et les tables de jointure.

Découvrir