tJava - 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 tJava permet de saisir du code personnalisé afin de l'intégrer dans le programme Talend. Ce code est exécuté une seule fois.

Objectif

Le tJava permet d'étendre les fonctionnalités du Job Talend grâce au langage Java.

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 tJava

Famille de composant

Custom Code

 

Basic settings

Code

Saisissez le code Java que vous souhaitez exécuter. Pour plus d'informations concernant la syntaxe des fonctions Java spécifiques à Talend, consultez l'aide en ligne du Studio Talend dans le menu Help Contents > Developer Guide > API Reference.

Pour la référence Java complète, consultez http://docs.oracle.com/javaee/6/api/ (en anglais).

Note

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

Advanced settings

Import

Saisissez le code Java permettant d'importer, si nécessaire, la librairie externe utilisée dans le champ Main code de l'onglet Basic settings.

 

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.

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.

Utilisation

Ce composant est généralement utilisé en tant que sous-job à un seul composant.

Limitation

Il est nécessaire de connaître le langage Java.

Scénario : Imprimer le contenu d'une variable

Le scénario suivant est une simple démonstration de l'application possible du composant tJava. L'objectif de ce Job est d'imprimer les lignes traitées à l'aide d'une commande Java et des variables globales fournies dans le Studio Talend.

Construire le Job

  1. Cliquez et déposez les composants dans l'espace de modélisation : tFileInputDelimited, tFileOutputExcel, tJava.

  2. Connectez le composant tFileInputDelimited au tFileOutputExcel à l'aide d'une connexion de type Row Main. Le contenu du fichier .txt délimité sera transmis à un fichier de type XSL via cette connexion sans subir de transformation.

  3. Ensuite, connectez le composant tFileInputDelimited au composant tJava à l'aide d'un lien de type Trigger > On Subjob Ok. Ce lien met en place un séquençage ordonnant au tJava de se lancer à la fin du processus principal.

Configurer le composant d'entrée

  1. Définissez les paramètres du composant tFileInputDelimited dans l'onglet Basic settings de la vue Component. Le fichier d'entrée utilisé en exemple est un simple fichier texte à deux colonnes : Name (des noms de personnes) et leur Emails respectifs.

  2. Pour cet exemple, le schéma n'a pas été centralisé dans le référentiel, vous devez donc configurer manuellement le schéma de ces deux colonnes.

  3. Cliquez sur le bouton Edit Schema.

  4. Une boîte de dialogue vous demandant si vous souhaitez propager les modifications apportées apparaît, cliquez sur OK pour accepter la propagation. Ainsi, le schéma du composant tFileOutputExcel est automatiquement renseigné à partir du schéma du composant précédent. Vous n'aurez donc pas à définir le schéma de nouveau.

Configurer le composant de sortie

Paramétrez le fichier de sortie afin qu'il reçoive le contenu du fichier d'entrée sans modifications. Si le fichier n'existe pas déjà, il sera créé.

Dans cet exemple, dans le champ Sheet name, indiquez le nom de la feuille Excel, ici Email et la case Header est cochée pour indiquer que le fichier contient un en-tête.

Configurer le composant tJava

  1. Sélectionnez le composant tJava pour définir la commande Java à exécuter.

  2. Dans la zone Code, saisissez la commande suivante :

    String var = "Nb of line processed: ";
    var = var + globalMap.get("tFileInputDelimited_1_NB_LINE");
    System.out.println(var);

Dans cet exemple précis, utilisez la variable NB_Line. Pour accéder à la liste des variables globales, appuyez sur Ctrl + Espace de votre clavier et sélectionnez la variable globale correspondante.

Exécuter le Job

  1. Enregistrez le Job en appuyant sur Ctrl+S.

  2. Appuyez sur F6 pour l'exécuter.

Le contenu est donc transmis au fichier Excel spécifié et le nombre de lignes traitées est affiché dans la console Run.

Propriétés du tJava dans des Jobs Spark Batch

Famille du composant

Custom Code

 

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].

Notez que, si la valeur d'entrée d'un champ primitif non nullable est nulle, la ligne de données comprenant ce champ sera rejetée.

 

 

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.

 

Code

Saisissez le code Java que vous souhaitez exécuter afin de traiter les données RDD provenant du lien d'entrée ou même créer de nouveaux RDD à partir de celui d'entrée.

Vous pouvez tirer parti du schéma, de la connexion et du nom du composant pour écrire le code personnalisé. Par exemple, si le composant est nommé tJava_1 et que la connexion à celui-ci se nomme row1, alors la classe du RDD d'entrée est row1Struct et le RDD d'entrée lui-même est disponible, avec la variable rdd_tJava_1.

Pour plus d'informations, consultez le commentaire par défaut fourni dans le champ Code de ce composant.

Pour plus d'informations concernant l'API Java Spark, consultez la documentation Apache Spark à l'adresse https://spark.apache.org/docs/latest/api/java/index.html (en anglais).

Advanced settings

Classes

Définissez les classes à utiliser dans le code écrit dans le champ Code de la vue Basic settings.

Il est recommandé de définir de nouvelles classes dans ce champ et non dans le champ Code, afin d'éviter d'éventuelles exceptions dans la sérialisation.

 

Import

Saisissez le code Java permettant d'importer, si nécessaire, la librairie externe utilisée dans le champ Main code de l'onglet Basic settings.

Utilisation dans les Jobs Spark Batch

Ce composant est utilisé en tant que composant de fin et requiert un lien d'entrée.

Ce composant, ainsi que la Palette Spark Batch à laquelle il appartient, ne s'affiche que lorsque vous créez un Job Spark Batch.

Notez que, dans cette documentation, sauf mention contraire, un scénario présente uniquement des Jobs Standard, c'est-à-dire des Jobs Talend traditionnels d'intégration de données.

Spark Connection

Vous devez utiliser l'onglet Spark Configuration de la vue Run afin de définir la connexion à un cluster Spark donné pour le Job complet. De plus, puisque le Job attend ses fichiers .jar dépendants pour l'exécution, un (et un seul) composant relatif à un système de fichiers de la famille Storage est requis au sein du même Job, afin que Spark puisse utiliser ce composant pour se connecter au système de fichiers auquel les fichiers .jar dépendants du Job sont transférés :

Cette connexion fonctionne uniquement pour le Job dans lequel vous l'avez définie.

Exemple de code

Dans le champ Code de l'onglet Basic settings, saisissez le code suivant afin de créer un RDD de sortie en utilisant des transformations personnalisées sur le RDD d'entrée. mapInToOut est une classe à définir dans le champ Classes dans l'onglet Advanced settings.

outputrdd_tJava_1 = rdd_tJava_1.map(new mapInToOut(job));

Dans le champ Classes de l'onglet Advanced settings, saisissez le code suivant afin de définir la classe mapInToOut :

public static class mapInToOut implements
org.apache.spark.api.java.function.Function<inputStruct,RecordOut_tJava_1>{
                                
   private ContextProperties context = null;
   private java.util.List<org.apache.avro.Schema.Field> fieldsList;
                                
   public mapInToOut(JobConf job) {
       this.context = new ContextProperties(job);
   }
                                
   @Override
   public RecordOut_tJava_1 call(inputStruct origStruct) {		
                                
      if (fieldsList == null) {
          this.fieldsList = (new inputStruct()).getSchema()
          .getFields();
      }
                                
      RecordOut_tJava_1 value = new RecordOut_tJava_1();
                                
      for (org.apache.avro.Schema.Field field : fieldsList) {
          value.put(field.pos(), origStruct.get(field.pos()));
      }
                                
      return value;		
                                
    }
}

Limitation

La connaissance des langages Spark et Java est nécessaire.

Scénario associé

Aucun scénario n'est disponible pour la version Spark Batch de ce composant.

Propriétés du tJava dans des Jobs Spark Streaming

Avertissement

La version Streaming de ce composant est disponible dans la Palette du studio si vous avez souscrit à Talend Real-time Big Data Platform ou Talend Data Fabric.

Famille du composant

Custom Code

 

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].

Notez que si la valeur d'entrée d'un champ primitif non-nullable est nulle, la ligne de données comprise dans ce champ sera rejetée.

 

 

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.

 

Code

Saisissez le code Java que vous souhaitez exécuter pour traiter le RDD entrant depuis le lien d'entrée ou même créer de nouveaux RDD depuis celui d'entrée.

Vous pouvez tirer parti du schéma, du lien et du nom du composant pour écrire du code personnalisé. Par exemple, si ce composant s'appelle tJava_1 et que la connexion à ce composant s'appelle row1, la classe du RDD d'entrée est row1Struct et le RDD d'entrée lui-même est disponible avec la variable rdd_tJava_1.

Pour des instructions plus détaillées, consultez le commentaire par défaut fourni dans le champ Code de ce composant.

Pour plus d'informations concernant l'API Java Spark, consultez la documentation d'Apache Spark à l'adresse https://spark.apache.org/docs/latest/api/java/index.html (en anglais).

Advanced settings

Classes

Définissez les classes à utiliser dans le code écrit dans le champ Code de la vue Basic settings.

Il est recommandé de définir de nouvelles classes dans ce champ et non dans le champ Code, afin d'éviter d'éventuelles exceptions dans la sérialisation.

 

Import

Saisissez le code Java permettant d'importer, si nécessaire, la librairie externe utilisée dans le champ Main code de l'onglet Basic settings.

Utilisation dans des Jobs Spark Streaming Jobs

Ce composant est utilisé en tant que composant de fin et nécessite un lien d'entrée.

Ce composant, ainsi que les composants Spark Streaming de la Palette à laquelle il appartient, s'affichent uniquement lorsque vous créez un Job Spark Streaming.

Notez que, dans cette documentation, sauf mention contraire, un scénario présente uniquement des Jobs de type Standard, c'est-à-dire des Jobs Talend traditionnels d'intégration de données.

Exemple de code

Dans le champ Code de l'onglet Basic settings, saisissez le code suivant afin de créer un RDD de sortie en utilisant des transformations personnalisées sur le RDD d'entrée. mapInToOut est une classe à définir dans le champ Classes dans l'onglet Advanced settings.

outputrdd_tJava_1 = rdd_tJava_1.map(new mapInToOut(job));

Dans le champ Classes de l'onglet Advanced settings, saisissez le code suivant afin de définir la classe mapInToOut :

public static class mapInToOut implements
org.apache.spark.api.java.function.Function<inputStruct,RecordOut_tJava_1>{
                                
   private ContextProperties context = null;
   private java.util.List<org.apache.avro.Schema.Field> fieldsList;
                                
   public mapInToOut(JobConf job) {
       this.context = new ContextProperties(job);
   }
                                
   @Override
   public RecordOut_tJava_1 call(inputStruct origStruct) {		
                                
      if (fieldsList == null) {
          this.fieldsList = (new inputStruct()).getSchema()
          .getFields();
      }
                                
      RecordOut_tJava_1 value = new RecordOut_tJava_1();
                                
      for (org.apache.avro.Schema.Field field : fieldsList) {
          value.put(field.pos(), origStruct.get(field.pos()));
      }
                                
      return value;		
                                
    }
}

Spark Connection

Vous devez utiliser l'onglet Spark Configuration de la vue Run afin de définir la connexion à un cluster Spark donné pour le Job complet. De plus, puisque le Job attend ses fichiers .jar dépendants pour l'exécution, un (et un seul) composant relatif à un système de fichiers de la famille Storage est requis au sein du même Job, afin que Spark puisse utiliser ce composant pour se connecter au système de fichiers auquel les fichiers .jar dépendants du Job sont transférés :

Cette connexion fonctionne uniquement pour le Job dans lequel vous l'avez définie.

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 associé

Aucun scénario n'est disponible pour la version Spark Streaming de ce composant.