tJavaRow - 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 tJavaRow permet de saisir du code personnalisé afin de l'intégrer dans le programme Talend. Avec le tJavaRow, vous pouvez saisir le code Java qui va être appliqué pour chaque ligne du flux.

Objectif

Le tJavaRow 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 tJavaRow

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.

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.

Lorsque le schéma à réutiliser contient des valeurs par défaut, qui sont des entiers (integer) ou des fonctions (function), assurez-vous que les valeurs par défaut ne sont pas entourées de guillemets. Si c'est le cas, vous devez supprimer manuellement les guillemets.

Pour plus d'informations, consultez l'article Vérification des valeurs par défaut dans un schéma récupéré sur Talend Help Center (https://help.talend.com).

  

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

Cliquez sur le bouton Sync columns pour récupérer le schéma du composant précédent.

 

Generate code

Cliquez sur ce bouton afin de générer automatiquement le code dans le champ Code pour mapper les colonne du schéma d'entrée à celles du schéma de sortie. Cette génération ne change rien à votre schéma.

Le principe de ce mapping est de relier les colonnes ayant le même nom. Vous pouvez adapter le code généra selon le mapping dont vous avez besoin.

 

Code

Saisissez le code Java qui va être appliqué pour chaque ligne du flux.

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

NB_LINE : nombre de lignes lues par un composant d'entrée ou passées à un composant de sortie. Cette variable est une variable After et retourne un entier.

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.

Pour saisir une variable globale (par exemple COUNT dans le tFileRowCount) dans le champ Code, vous devez saisir manuellement le code complet, c'est-à-dire ((Integer)globalMap.get("tFileRowCount_COUNT")).

Utilisation

Ce composant est utilisé en tant que composant de milieu de Job, et doit être relié à un composant de début et à un composant de sortie.

Limitation

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

Scénario : Transformer des données ligne par ligne avec un tJavaRow

Dans ce scénario, les informations de quelques villes sont lues depuis un fichier d'entrée délimité et sont transformées à l'aide de code Java via le composant tJavaRow, puis affichées dans la console.

Construire le Job

  1. Déposez un composant tFileInputDelimited et un tJavaRow de la Palette dans l'espace de modélisation graphique et renommez-les afin d'identifier leur rôle dans le Job.

  2. Connectez les deux composant à l'aide d'un lien Row > Main.

Configurer les composants

  1. Double-cliquez sur le tFileInputDelimited pour afficher sa vue Basic settings.

  2. Dans le champ File name/Stream, saisissez le chemin d'accès au fichier d'entrée, entre guillemets doubles, ou parcourez votre système en cliquant sur le bouton [...] et saisissez 1 dans le champ Header.

    Dans cet exemple, le fichier d'entrée contient :

    City;Population;LandArea;PopDensity
    Beijing;10233000;1418;7620
    Moscow;10452000;1081;9644
    Seoul;10422000;605;17215
    Tokyo;8731000;617;14151
    New York;8310000;789;10452
  3. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir la boîte de dialogue [Schema] et définissez la structure des données du fichier d'entrée. Cliquez sur OK pour valider le schéma et fermer la boîte de dialogue.

  4. Double-cliquez sur le composant tJavaRow afin d'afficher sa vue Basic settings.

  5. Cliquez sur Sync columns afin de vous assurer que le schéma est bien récupéré du composant précédent.

  6. Dans le champ Code, saisissez le code à appliquer à chaque ligne de données.

    Dans cet exemple, vous allez mettre des majuscules aux noms des villes, regrouper les nombres supérieurs à 1000 à l'aide de séparateurs de milliers pour une meilleure lecture et afficher les données dans la console :

    System.out.print("\n" + input_row.City.toUpperCase() + ":");
    System.out.print("\n - Population: " 
    + FormatterUtils.format_Number(String.valueOf(input_row.Population), ',', '.') + " people");
    System.out.print("\n - Land area: " 
    + FormatterUtils.format_Number(String.valueOf(input_row.LandArea), ',', '.') 
    + " km2");
    System.out.print("\n - Population density: " 
    + FormatterUtils.format_Number(String.valueOf(input_row.PopDensity), ',', '.') + " people/km2\n");

    Note

    Dans le champ Code, input_row fait référence à la connexion vers le tJavaRow.

Sauvegarder et exécuter le Job

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

  2. Appuyez sur F6 ou cliquez sur le bouton Run dans la vue Run pour exécuter le Job.

    Les informations relatives aux villes sont transformées par le code Java défini dans le tJavaRow et affichées dans la console.

Scénario : Utiliser un tJavaRow pour gérer le contenu d'un fichier à partir d'un schéma dynamique

Ce scénario décrit un Job à trois composants utilisant du code Java via le tJavaRow, pour afficher le contenu d'un fichier d'entrée et le passer au composant de sortie. Comme tous les composants de ce Job supportent la fonctionnalité de schéma dynamique, vous pouvez l'utiliser et gagner du temps, en évitant de configurer chaque colonne du schéma.

Construire le Job

  1. Déposez un tFileInputDelimited, un tJavaRow et un tFileOutputDelimited de la Palette dans l'espace de modélisation graphique et nommez-les selon leur rôle dans le Job.

  2. Connectez les composants les uns aux autres, à l'aide de liens Row > Main.

Configurer les composants d'entrée et de sortie

  1. Double-cliquez sur le composant tFileInputDelimited nommé Source, pour afficher sa vue Basic settings.

    Avertissement

    L'option de schéma dynamique n'est supportée qu'en mode Built-In et requiert que le fichier d'entrée ait une ligne d'en-tête.

  2. Dans le champ File name/Stream, saisissez le chemin d'accès au fichier d'entrée, entre guillemets doubles, ou parcourez votre système en cliquant sur le bouton [...].

  3. Dans le champ Header, saisissez 1 afin de définir la première ligne comme ligne d'en-tête.

  4. Cliquez sur le bouton [...] à côté de Edit schema pour ouvrir la boîte de dialogue [Schema].

  5. Cliquez sur le bouton [+] pour ajouter une colonne, donnez un nom à la colonne, dyna dans cet exemple et sélectionnez Dynamic dans la liste Type. Cette colonne dynamique va récupérer les trois colonnes du fichier d'entrée, FirstName, LastName et Address.

  6. Cliquez sur OK pour valider et fermer la boîte de dialogue.

  7. Double-cliquez sur le composant tFileOutputDelimited nommé Target, pour afficher sa vue Basic settings.

  8. Définissez le chemin d'accès au fichier de sortie dans le champ File Name.

  9. Cochez la case Include Header afin d'inclure l'en-tête dans le fichier de sortie. Laissez les autres paramètres tels qu'ils sont.

Configurer le composant tJavaRow

  1. Double-cliquez sur le tJavaRow pour afficher sa vue Basic settings.

  2. Cliquez sur Sync columns afin de vous assurer que le schéma est bien récupéré du composant précédent.

  3. Dans le champ Code, saisissez le code suivant pour afficher le contenu du fichier d'entrée et passer les données au composant suivant, selon la colonne dynamique :

    System.out.println(input_row.dyna);
    output_row.dyna = input_row.dyna;

    Note

    Dans le champ Code, input_row et output_row correspondent au nom des liens entrant et sortant du tJavaRow.

Sauvegarder et exécuter le Job

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

  2. Appuyez sur la touche F6, ou cliquez sur le bouton Run dans l'onglet Run afin d'exécuter votre Job.

    Le contenu du fichier d'entrée est affiché dans la console et écrit dans le fichier de sortie.

Propriétés du tJavaRow 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.

 

 

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.

Lorsque le schéma à réutiliser contient des valeurs par défaut, qui sont des entiers (integer) ou des fonctions (function), assurez-vous que les valeurs par défaut ne sont pas entourées de guillemets. Si c'est le cas, vous devez supprimer manuellement les guillemets.

Pour plus d'informations, consultez l'article Vérification des valeurs par défaut dans un schéma récupéré sur Talend Help Center (https://help.talend.com).

  

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

Cliquez sur le bouton Sync columns pour récupérer le schéma du composant précédent.

Notez que le schéma d'entrée et le schéma de sortie de ce composant peuvent être différents.

 

Map type

Sélectionnez le type de transformation Map à effectuer. Cela permet au composant de sélectionner automatiquement la méthode et de déclarer les variables à utiliser dans votre code personnalisé.

Les types disponibles sont :

  • Map : retourne un seul enregistrement de sortie pour chaque enregistrement d'entrée. Ce type utilise la méthode PairFunction de Spark.

  • FlatMap : retourne 0 enregistrement de sortie ou plus pour chaque enregistrement d'entrée. Ce type utilise la méthode FlatMapFunction de Spark.

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

 

Generate code

Cliquez sur ce bouton afin de générer automatiquement le code dans le champ Code pour mapper les colonne du schéma d'entrée à celles du schéma de sortie. Cette génération ne change rien à votre schéma.

Le code d'exemple généré affiche les variables prédéfinies pour les RDD d'entrée et de sortie et comment ces variables peuvent être utilisées.

 

Code

Saisissez le corps personnalisé de la méthode sélectionnée dans la liste déroulante Map type. Vous devez utiliser le schéma d'entrée et le schéma de sortie pour gérer les colonnes des enregistrements d'entrée et de sortie RDD. Ce code personnalisé est appliqué sur les enregistrements RDD, ligne par ligne.

Par exemple, le schéma d'entrée contient une colonne user, vous devez donc utiliser la variable input.user pour obtenir la colonne user de chaque enregistrement d'entrée.

Pour plus d'informations concernant les variables disponibles lors de l'écriture du code personnalisé, consultez le commentaire par défaut affiché dans ce champ.

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.

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.

Pour saisir une variable globale (par exemple COUNT dans le tFileRowCount) dans le champ Code, vous devez saisir manuellement le code complet, c'est-à-dire ((Integer)globalMap.get("tFileRowCount_COUNT")).

Utilisation dans des Jobs Spark Batch

Ce composant est utilisé comme étape intermédiaire.

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.

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

Limitation

Il est nécessaire de connaître les langages Java et Spark.

Scénario associé

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

Propriétés du tJavaRow 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.

 

 

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.

Lorsque le schéma à réutiliser contient des valeurs par défaut, qui sont des entiers (integer) ou des fonctions (function), assurez-vous que les valeurs par défaut ne sont pas entourées de guillemets. Si c'est le cas, vous devez supprimer manuellement les guillemets.

Pour plus d'informations, consultez l'article Vérification des valeurs par défaut dans un schéma récupéré sur Talend Help Center (https://help.talend.com).

  

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

Cliquez sur le bouton Sync columns pour récupérer le schéma du composant précédent.

Notez que le schéma d'entrée et le schéma de sortie de ce composant peuvent être différents.

 

Map type

Sélectionnez le type de transformation Map à effectuer. Cela permet au composant de sélectionner automatiquement la méthode et de déclarer les variables à utiliser dans votre code personnalisé.

Les types disponibles sont :

  • Map : retourne un seul enregistrement de sortie pour chaque enregistrement d'entrée. Ce type utilise la méthode PairFunction de Spark.

  • FlatMap : retourne 0 enregistrement de sortie ou plus pour chaque enregistrement d'entrée. Ce type utilise la méthode FlatMapFunction de Spark.

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

 

Generate code

Cliquez sur ce bouton afin de générer automatiquement le code dans le champ Code pour mapper les colonne du schéma d'entrée à celles du schéma de sortie. Cette génération ne change rien à votre schéma.

Le code d'exemple généré affiche les variables prédéfinies pour les RDD d'entrée et de sortie et comment ces variables peuvent être utilisées.

 

Code

Saisissez le corps personnalisé de la méthode sélectionnée dans la liste déroulante Map type. Vous devez utiliser le schéma d'entrée et le schéma de sortie pour gérer les colonnes des enregistrements d'entrée et de sortie RDD. Ce code personnalisé est appliqué sur les enregistrements RDD, ligne par ligne.

Par exemple, le schéma d'entrée contient une colonne user, vous devez donc utiliser la variable input.user pour obtenir la colonne user de chaque enregistrement d'entrée.

Pour plus d'informations concernant les variables disponibles lors de l'écriture du code personnalisé, consultez le commentaire par défaut affiché dans ce champ.

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.

Utilisation dans des Jobs Spark Streaming

Ce composant est utilisé comme étape intermédiaire.

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.

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

Limitation

Il est nécessaire de connaître les langages Java et Spark.

Scénario associé

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