tRunJob - 6.3

Composants Talend Guide de référence

EnrichVersion
6.3
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
Talend Real-Time Big Data Platform
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Fonction

Le composant tRunJob exécute le Job spécifié dans ses propriétés dans un contexte défini.

Objectif

Le tRunJob permet de maîtriser des systèmes de Job complexes devant être exécuter l'un après l'autre.

Selon la solution Talend que vous utilisez, ce composant peut être utilisé dans un framework de Jobs, dans plusieurs, ou dans tous les frameworks :

Propriétés du tRunJob

Famille du composant

System

 

Basic settings

Schema et Edit Schema

Un schéma est une description de lignes, il définit le nombre de champs (colonnes) qui sont traités et passés au composant suivant. Le schéma est soit local (Built-In), soit distant dans le Repository.

Cliquez sur Edit schema pour modifier le schéma. Si le schéma est en mode Repository, trois options sont disponibles :

  • View schema : sélectionnez cette option afin de voir le schéma.

  • Change to Built-In property : sélectionnez cette option pour passer le schéma en mode Built-In et effectuer des modifications locales.

  • Update repository connection : sélectionnez cette option afin de modifier le schéma stocké dans le référentiel et décider de propager ou non les modifications à tous les Jobs. Si vous souhaitez propager les modifications uniquement au Job courant, cliquez sur No et sélectionnez à nouveau la métadonnée du schéma dans la fenêtre [Repository Content].

Ce composant offre la fonction de schéma dynamique. Cela vous permet de récupérer des colonnes inconnues à partir de fichiers source ou de copier des lots de colonnes d'une source sans avoir à mapper individuellement ces colonnes. Pour plus d'informations concernant les schémas dynamiques, consultez le Guide utilisateur de Studio Talend.

Cette fonctionnalité de schéma dynamique est conçue pour permettre de récupérer des colonnes inconnues d'une table. Il est recommandé de l'utiliser uniquement à cet effet et non pour créer des tables.

 

 

Built-In : Le schéma est créé et conservé ponctuellement pour ce composant seulement. Voir également le Guide utilisateur du Studio Talend.

 

 

Repository : Le schéma existe déjà et il est stocké dans le Repository. Ainsi, il peut être réutilisé. Voir également le Guide utilisateur du Studio Talend.

 

Copy Child Job Schema

Cliquez sur ce bouton pour récupérer le schéma du Job fils.

 

Use dynamic job

Cochez cette case afin de pouvoir appeler et traiter de nombreux Jobs. Lorsque cette case est cochée, seule la dernière version des Jobs peut être appelée et traitée. Un processus indépendant sera utilisé pour exécuter le sous-job. Les options Context et Use an independent process to run subjob disparaissent.

Avertissement

L'option Use dynamic job n'est pas compatible avec le cache du JobServer. Dès lors, l'exécution peut échouer si vous exécutez dans Talend Administration Center un Job contenant un composant tRunJob avec cette option activée.

Avertissement

Cette option est incompatible avec l'option Use or register a shared DB Connection des composants de base de données. Quand le tRunJob fonctionne de paire avec un composant de connexion à une base de données, activer les deux options fera échouer l'exécution du Job.

 

Context job

Ce champ est visible uniquement lorsque l'option Use dynamic job est cochée. Saisissez le nom du Job que vous souhaitez appeler dans la liste des Jobs sélectionnés.

 

Job

Sélectionnez le Job à appeler et à traiter. Assurez-vous que le Job appelé ait été exécuté au moins une fois auparavant pour que son exécution via le tRunJob se déroule le mieux possible.

 

Version

Sélectionnez la version du Job fils que vous souhaitez utiliser.

 

Context

Si vous avez paramétré des contextes et des variables pour les Jobs à exécuter via le tRunJob, sélectionnez dans la liste le contexte à appliquer.

 

Use an independent process to run subjob

Cochez cette case afin d'utiliser un processus indépendant pour exécuter le sous-job. Cela vous permettra de résoudre des problèmes liés à la taille limite de la mémoire.

Avertissement

L'option Use dynamic job n'est pas compatible avec le cache du JobServer. Dès lors, l'exécution peut échouer si vous exécutez dans Talend Administration Center un Job contenant un composant tRunJob avec cette option activée.

Avertissement

Cette option n'est pas compatible avec l'option Use or register a shared DB Connection des composants de connexion à une base de données. Lorsque le tRunJob fonctionne avec un composant de connexion à une base de données, activer les deux options peut faire échouer votre Job.

 

Die on child error

Décochez cette case pour exécuter le Job parent même s'il y a une erreur lors de l'exécution du Job fils.

 

Transmit whole context

Cochez cette case pour obtenir les contextes du Job parent. Décochez-la pour obtenir les contextes du Job fils.

Si cette case est cochée lorsque les Jobs père et fils ont les mêmes variables de contexte définies :

  • les valeurs des variables pour le Job père sont utilisées durant l'exécution du Job fils si aucune valeur cohérente n'est définie dans la table Context Param.

  • sinon, les valeurs définies dans la table Context Param sont utilisées durant l'exécution du Job fils.

 

Context Param

Vous pouvez modifier la valeur du contexte sélectionné. Cliquez sur le bouton [+] pour ajouter les paramètres définis dans l'onglet Context contexte du Job fils. Pour plus d'informations sur les paramètres de contexte, consultez le Guide utilisateur du Studio Talend.

Les valeurs définies ici sont utilisées durant l'exécution du Job fils, même si la case Transmit whole context est cochée.

Advanced settings

Propagate the child result to the output schema

Cochez cette case afin de propager les données de sortie stockées dans la mémoire tampon via le composant tBufferOutput du Job fils vers le composant de sortie du Job père.

Cette case est décochée par défaut. Elle ne s'affiche pas lorsque vous cochez la case Use dynamic job ou Use an independent process to run subjob.

 

Print Parameters

Cochez cette case pour afficher les paramètres internes et externes dans la Console.

 

tStatCatcher Statistics

Cochez cette case pour collecter les données de log au niveau du composant.

Global Variables

ERROR_MESSAGE : message d'erreur généré par le composant lorsqu'une erreur survient. Cette variable est une variable After et retourne une chaîne de caractères. Cette variable fonctionne uniquement si la case Die on error est décochée, si le composant a cette option.

CHILD_RETURN_CODE : code de retour d'un Job fils. Cette variable est une variable After et retourne un nombre entier.

CHILD_EXCEPTION_STACKTRACE : trace de la pile d'un Job fils. Cette variable est une variable After et retourne une chaîne de caractères.

Une variable Flow fonctionne durant l'exécution d'un composant. Une variable After fonctionne après l'exécution d'un composant.

Pour renseigner un champ ou une expression à l'aide d'une variable, appuyez sur les touches Ctrl+Espace pour accéder à la liste des variables. A partir de cette liste, vous pouvez choisir la variable que vous souhaitez utiliser.

Pour plus d'informations concernant les variables, consultez le Guide utilisateur du Studio Talend.

Connections

Liens de sortie (de ce composant à un autre) :

Row : Main.

Trigger : OnSubjobOk, OnSubjobError, Run if, OnComponentOk, OnComponentError.

Liens d'entrée (d'un autre composant à celui-ci) :

Row : Main, Reject, Iterate.

Trigger : OnSubjobOk, OnSubjobError, Run if, OnComponentOk, OnComponentError, Synchronize, Parallelize.

Pour plus d'informations concernant les liens, consultez la section relative aux types de connexions, dans le Guide utilisateur du Studio Talend.

Utilisation

Ce composant peut être utilisé en Job standalone ou peut aider à clarifier certains Jobs complexes en évitant d'avoir un nombre important de sous-jobs dans le même Job.

Si vous souhaitez créer un groupe de composants réutilisable à insérer dans plusieurs Jobs ou plusieurs fois dans le même Job, vous pouvez utiliser un Joblet. A la différence du tRunJob, le Joblet utilise les variables de contexte du Job dans lequel il est inséré. Pour plus d'informations sur les Joblets, consultez le Guide utilisateur du Studio Talend.

Ce composant vous permet également d'appeler un Job d'un framework différent, comme un Job Spark Batch Job ou Spark Streaming.

Log4j

Si vous utilisez une solution Talend soumise à souscription, l'activité de ce composant peut être journalisée avec la fonctionnalité log4j. Pour plus d'informations sur cette fonctionnalité, consultez le Guide utilisateur du Studio Talend.

Pour plus d'informations sur les niveaux de logs du log4j, consultez la documentation d'Apache : http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html (en anglais).

Scénario 1 : Exécuter un Job fils

Le scénario suivant décrit un Job à un composant appelant et exécutant un autre Job. Le Job à exécuter lit une liste de fichiers délimités simples et affiche leur contenu dans la console de la vue Run.

Créer le Job fils

Déposer et relier les composants

  1. A partir de la Palette, cliquez et déposez les composants tFileInputDelimited et tLogRow dans l'espace de modélisation graphique.

  2. Connectez ces deux composants à l'aide d'un lien de type Row Main.

Configurer les composants

  1. Double-cliquez sur le composant tFileInputDelimited pour afficher la vue Basic settings et paramétrer les propriétés du composant d'entrée.

  2. Cliquez dans le champ File Name puis appuyez sur la touche F5 pour ouvrir la fenêtre de configuration de variable.

  3. Dans le champ Name, saisissez un nom pour cette nouvelle variable de contexte. Nommez-la File, dans cet exemple.

  4. Dans le champ Defaut value, saisissez le chemin d'accès au fichier d'entrée par défaut.

  5. Cliquez sur Finish pour valider puis appuyez sur Entrée pour vous assurer que la nouvelle variable de contexte est conservée dans le champ File Name.

    Note

    Vous pouvez également créer ou éditer un paramètre de contexte dans l'onglet Context au bas de l'espace de modélisation graphique. Pour plus d'informations, consultez le Guide utilisateur du Studio Talend

  6. Cliquez sur le bouton [...] près de Edit schema pour ouvrir la boîte de dialogue [Schema], dans laquelle vous pouvez configurer le schéma manuellement.

  7. Dans la boîte de dialogue, cliquez sur le bouton [+] pour ajouter des colonnes et nommez-les en fonction de la structure du fichier d'entrée.

    Dans cet exemple, ce composant lit les fichiers définis dans le Job parent. Ces fichiers contiennent jusqu'à cinq colonnes. Ajoutez cinq colonnes de type String et appelez-les respectivement col_1, col_2, col_3, col_4 et col_5. Cliquez ensuite sur OK pour valider la configuration du schéma et fermer la boîte de dialogue [Schema].

  8. Double-cliquez sur le composant tLogRow pour afficher sa vue Basic settings et paramétrer ses propriétés.

  9. Sélectionnez l'option Table pour visualiser le contenu dans des cellules de tableau.

Créer le Job parent

Déposer et relier les composants

  1. Cliquez et déposez les composants tFileList et tRunJob dans l'espace de modélisation.

  2. Connectez ces deux composants à l'aide d'un lien de type Iterate.

Configurer les composants

  1. Double-cliquez sur le composant tFileList pour afficher la vue Basic settings et paramétrer les propriétés du composant.

  2. Dans le champ Directory, renseignez le chemin d'accès au répertoire contenant les fichiers à traiter ou cliquez sur le bouton [...] pour parcourir votre système jusqu'à ce répertoire. Dans cet exemple, il s'agit du répertoire tRunJob qui contient trois fichiers délimités.

  3. Dans la liste déroulante FileList Type, sélectionnez l'option Files.

  4. Cochez la case Use Glob Expressions as Filemask pour pouvoir utiliser des expressions régulières dans vos masques de fichier et cliquez sur le bouton [+] pour ajouter une ligne dans la zone Files et définir un filtre pour faire correspondre les fichiers. Dans cet exemple, saisissez .csv pour récupérer tous les fichiers délimités.

  5. Double-cliquez sur le composant tRunJob pour afficher la vue Basic settings et paramétrer les propriétés du composant.

  6. Cliquez sur le bouton [...] à côté du champ Job pour accéder à la boîte de dialogue [Find a Job].

  7. Sélectionnez le Job fils à exécuter puis cliquez sur OK pour fermer la boîte de dialogue. Le nom du Job sélectionné apparaît dans le champ Job de la vue Basic settings du tRunJob.

  8. Dans la zone Context Param, cliquez sur le bouton [+] pour ajouter un paramètre de contexte. Le seul paramètre de contexte défini dans le Job fils, File, apparaît dans la cellule Parameter.

  9. Cliquez dans la cellule Values puis appuyez sur Ctrl+Espace pour accéder à la liste des variables de contexte et sélectionnez le contexte tFileList-1.CURRENT_FILEPATH.

    La variable de contexte correspondante apparaît dans la cellule Values : ((String)globalMap.get(tFileList-1.CURRENT_FILEPATH))

    Note

    Pour plus d'informations concernant les variables de contexte, consultez le Guide utilisateur du Studio Talend.

Exécuter le Job parent

  1. Appuyez sur les touches Ctrl+S pour sauvegarder votre Job.

  2. Appuyez sur F6 pour exécuter votre Job.

Le Job appelé lit les données contenues dans les fichiers d'entrée comme défini dans le schéma d'entrée et le résultat de ce Job est directement affiché dans la console Run.

Voir également :

Scénario 2 : Exécuter une liste de Jobs fils de manière dynamique

Ce scénario décrit un Job qui appelle deux Jobs fils de manière dynamique. Lorsqu'ils sont appelés par le Job père, chacun des Jobs fils affiche un message dans la console.

Configurer les Jobs fils

  1. Créez un Job nommé child_1 et ajoutez deux composants en tapant leur nom dans l'espace de modélisation graphique ou en les déposant depuis la Palette :

    • un tFixedFlowInput, afin de générer un message et

    • un tLogRow, afin d'afficher le message généré dans la console.

  2. Reliez le tFixedFlowInput au tLogRow à l'aide d'un lien Row > Main.

  3. Double-cliquez sur le tFixedFlowInput afin d'ouvrir sa vue Basic settings.

  4. Cliquez sur le bouton [...] à côté du bouton Edit schema afin d'ouvrir la boîte de dialogue [Schema] et définir la schéma d'entrée.

    Dans cet exemple, le schéma a une seule colonne : Message (de type String).

    Une fois le schéma défini, cliquez sur OK afin de fermer l'éditeur. Dans la boîte de dialogue qui s'affiche, cliquez sur Yes afin de propager les changements au composant suivant.

  5. Cochez la case Use Inline Content et, dans le champ Content, saisissez le message que vous souhaitez afficher dans la console, Hello World! dans cet exemple.

  6. Dans la vue Basic settings du tLogRow, sélectionnez le mode Table afin d'afficher le résultat de l'exécution sous forme de tableau.

  7. Créez une copie de ce Job et nommez-le child_2. Dans le champ Content du tFixedFlowInput, saisissez un autre message, Hello Talend! dans cet exemple.

  8. Appuyez sur Ctrl+S afin de sauvegarder les Jobs.

Configurer le Job père

Ajouter et relier les composants

  1. Créez un nouveau Job et ajoutez les composants suivants en tapant leur nom dans l'espace de modélisation graphique ou en les déposant depuis la Palette :

    • un tFixedFlowInput, afin de définir dynamiquement la liste des Jobs à appeler,

    • un tFlowToIterate, afin d'effectuer une itération sur les lignes en entrée et stocker le contenu dans une variable globale d'itération et

    • un tRunJob, afin de charger et exécuter les Jobs fils.

  2. Reliez le tFixedFlowInput au tFlowToIterate à l'aide d'un lien Row > Main.

  3. Reliez le tFlowToIterate au tRunJob à l'aide d'un lien Row > Iterate.

Configurer les composants

  1. Double-cliquez sur le tFixedFlowInput afin d'ouvrir sa vue Basic settings.

  2. Cliquez sur le bouton [...] à côté du champ Edit schema afin d'ouvrir la boîte de dialogue [Schema] et définir le schéma d'entrée.

    Dans cet exemple, le schéma a une seule colonne : Job (de type String).

    Une fois le schéma défini, cliquez sur OK afin de fermer l'éditeur. Dans la boîte de dialogue qui s'affiche, cliquez sur Yes afin de propager les changements au composant suivant.

  3. Cochez la case Use Inline Content et, dans le champ Content, spécifiez le nom des Jobs fils qui sont appelés par le Job père :

    child_1
    child_2
  4. Double-cliquez sur le tRunJob afin d'ouvrir sa vue Basic settings.

  5. Cochez la case Use dynamic job.

  6. Cliquez dans le champ Context job, appuyez sur Ctrl+Espace et, dans la liste de variable, sélectionnez la variable d'itération créée par le composant tFlowToIterate, Job dans cet exemple. Le champ Context job contient à présent ((String)globalMap.get("row1.Job")). A chaque itération, cette variable est remplacée par le nom du Job appelé.

  7. Cliquez sur le bouton [...] à côté du champ Job afin d'ouvrir la boîte de dialogue [Select Job]. Sélectionnez tous les Jobs que vous souhaitez exécuter et cliquez sur OK afin de fermer la boîte de dialogue.

  1. Appuyez sur Ctrl+S afin de sauvegarder le Job.

  2. Appuyez sur F6 ou cliquez sur le bouton Run de la console Run afin d'exécuter le Job.

    Les Jobs fils sont appelés l'un après l'autre et les messages spécifiés dans les Jobs fils sont affichés dans la console.

Scénario 3 : Propager les données de sortie en mémoire tampon du Job fils au Job père

Dans ce scénario, un Job à trois composants appelle un Job fils de deux composants et affiche dans la console les données de sortie du Job fils mises en mémoire tampon, au lieu des données du flux d'entrée du Job père.

Construire le Jobs fils

  1. Créez un Job nommé child et ajoutez deux composants en cliquant puis saisissant leur nom dans l'espace de modélisation graphique ou en les glissant de la Palette dans l'espace de modélisation graphique :

    • un tFixedFlowInput, pour générer un message,

    • un tBufferOutput, pour stocker le message généré dans la mémoire tampon.

  2. Reliez le composant tFixedFlowInput au tBufferOutput à l'aide d'un lien Row > Main.

  3. Double-cliquez sur le composant tFixedFlowInput pour ouvrir sa vue Basic settings.

  4. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir la boîte de dialogue [Schema] et définir le schéma des données d'entrée. Dans cet exemple, le schéma contient une seule colonne message de type String.

    Cela fait, cliquez sur OK pour valider les modifications puis sur Yes dans la boîte de dialogue [Propagate] afin de propager le schéma au composant suivant.

  5. Dans la zone Mode, sélectionnez l'option Use Single Table et définissez la valeur de la colonne message dans la table Values. Dans cet exemple, la valeur est "message from the child job".

Construire le Job père