Talend | BI experience - Part 2

Archive pour la catégorie ‘Talend’

Différents environnements? Allons voir du coté des contextes de Talend…

Jeudi 14 janvier 2010

Talend propose dans son application, de créer des contextes (variables) qui peuvent être déclarés aussi bien au niveau d’un job qu’au niveau d’un projet.

La notion de contexte peut être vraiment utile lors de la gestion de différents environnements : développement, recette, production. Nous allons voir dans ce post comment créer ces contextes.

Deux possibilités s’offrent à nous:

La première solution :

Commençons par une déclaration de connexion classique :

declaration_connexion_1

En Cliquant sur le bouton “Exporter comme Contexte”, nous obtenons la fenêtre ci-dessous. Puis en cliquant sur l’icône qui est ici encadré en rouge, Talend nous permet de créer différentes possibilités de contextes pour notre connexion.

declaration_connexion_21

Ces contextes sont créés en cliquant sur “nouveau” ici encadré en rouge
declaration_connexion_31

C’est enfin dans cette fenêtre que nous pouvons modifier les variables de connexion à nos différents environnements

declaratiobn_connexion_4

Et voila! La connexion fait maintenant appel aux contextes :

declaration_connexion_5

Ces contextes sont liés au projet

declaration_connexion_6

La seconde solution :

La gestion des environnements pourra se faire en passant par le composant tContextLoad qui fait finalement appel à des fichiers de configuration :

Grâce à un fichier texte comme celui-ci :

contextload_31

Puis dans Talend, les jobs commenceront comme ceci :
contextload_1

Attention ne pas oublier de déclarer ces contextes dans le job :
contextload_2

Et de finalement les déclarer dans les connexions d’input et/ou d’output
contextload_4

Les noms “serveur, port, login…” présents dans le fichier texte doivent avoir le même nom que les variables de contexte. C’est ainsi que dans un même fichier on pourra déclarer plusieurs connexions. Vous n’avez plus qu’à créer un ficher de dev, un autre de recette et un de prod et le tour est joué!

Ces deux solutions sont réalisables aussi bien sur TIS que sur TOS. L’une gère la connexion au niveau du projet (solution 1) et l’autre au niveau du job (solution 2).

Pour le schedule de l’exécution des jobs, sous TOS, il faudra fonctionner avec des script bash.
-En exportant les scripts du job en .zip en faisant clique droit “exporter les scripts du job” sur le job que vous aurez sélectionné. Puis dans le .zip vous trouverez un .sh ou .bat. En vous mettant dans ce répertoire vous pourrez exécuter des lignes de commandes de type :

  • test_run.bat –context_param filename=C:/Prod.txt –context=Default sous Windows et
  • sh ./test_run.sh –context_param filename=home/test_fichier_load.txt –context=Default (attention au permission n’oublier pas le chmod)

Si on regarde cette ligne de commande de plus près :

  • soit vous pourrez passer par le fichier –context_param filename=C:/Prod.txt si vous avez un context load (solution 2) dans le job ou
  • soit vous pourrez enlever cette partie faisant appel au fichier et changer –context=Default en mettant –context=PROD par exemple si le contexte est géré dans le projet (solution 1)

Sous TIS Lors de la construction du job le développeur prendra comme contexte par défaut (celui de dev). Par la suite ce job pourra être scheduler par l’administrateur. Il pourra choisir le contexte d’exemption approprié sur la plateforme que propose TIS : Talend Administration Center (TAC).

Voilà j’espère avoir été claire sur cette gestion des environnements par context. Si vous avez des commentaires n’hésitez pas…

l’AMC et l’AMD de TIS

Lundi 21 septembre 2009

L’AMD (Activity Monitoring Dashboard) et l’AMC (Activity Monitoring Control) sont deux modules qui permettent de faire des contrôles sur l’exécution des flux.

L’AMD est plutôt pour l’administrateur des jobs Talend. Ce module se trouve sur la plateforme TAC (Talend Administration Center). Il propose un contrôle sur :

  • le temps d’exécution
  • la visualisation des erreurs JAVA ou PERL lors d’un problème d’exécution d’un job

L’AMC est un module proposé au développeur dans la plateforme TIS (Talend Integration Studio) . Il lui permet de visualiser :

  • le temps d’éxécution
  • le nombre de lignes géré
  • les erreurs JAVA, PERL enventuelles

Ces informations peuvent être collectées aussi bien au niveau d’un composant qu’au niveau d’un job. Ces données que fourni l’AMC pourront être stockées dans une base de données à part, dans le référentiel de TAC ou dans une autre base de donnéess au choix.

Pour configurer votre TIS :

  • aller dans Window>preferences>AMC et créer le point de connexion à une base de données
  • redéclarer cette connexion dans le référentiel Talend Studio

Puis pour avoir accès à la plateforme AMC aller dans Window > perspective > AMC perspective.

Afin de collecter les informations sur l’exécution d’un job, deux méthodes s’offrent à nous:

  • une méthode implicite
  • une méthode explicite

La méthode implicite : Il suffit de cocher les options dans la view du job (Window > Show view > Job).

implicite

Puis

pour le contrôle du temps d’exécution : cocher les options dans les composants : advanced settings >tStatCatcher Statistic

pour le contrôle du nombre de lignes : en cliquant sur un lien de type row on a ensuite accès à 2 modes :

  • absolute : permet juste de connaître le nombre de lignes passant dans ce lien
  • relative : permet de regarder le nombre de lignes passant dans ce lien en fonction d’un autre. Il est possible ensuite de faire des seuils avec des codes couleurs qui seront répercutés au niveau des graphiques de l’AMC. (voir Thresholds)

La méthode explicite : en utilisant directement des composants dans le job (voir Logs&Errors):

  • tStatCatcher : pour les statisitques du temps d’exécution
  • tFlowMetter : pour le nombre de lignes traitées
  • tLogCatcher, tWarn, tDie : pour le contrôle des erreurs Java

Présentation de la plateforme Talend TIS

Jeudi 17 septembre 2009

La version payante de Talend TIS permet d’industrialiser les jobs.

La plateforme est constituée de

  • Talend Integration Suite Studio (TIS) ou le développeur va créer ses jobs et pourvoir profiter de l’AMC (Activity Monitoring Controller) pour controler l’exécution des jobs
  • Talend Administration Center (TAC) ou l’administrateur des jobs va pouvoir :
    • de créer des comptes qui auront accès à l’applicationde créer des projets
    • de gérer les droits, autorisations
    • prévoir des taches de planification (Trigger : simple trigger (juste en précisant le nombre de fois qu’il doit être exécuté et un intervalle de temps), le CronUI Trigger en précisant des dates précises dans le mois par exemple et enfin le File Trigger qui permet d’exécuter un job si un fichier arrive dans un répertoire.)
    • déclarer des serveurs d’exécution ou les jobs schédulés seront exécutés (serveurs physiques ou virtuels)
    • Suivre l’évolution des jobs grâce à des Dashbord avec l’AMD (Activity Monitoring Dashboard)

talend_plateforme

Comme vous pouvez le voir sur le schéma il y a finalement 2 référentiels :

  • un référentiel de type base de données pour les informations de la plateforme TAC
  • un référentiel de type SVN pour stocker les projets de TIS (en allant vérifier les droits d’accès dans le référentiel de type base de données (flèches 1 et 2 puis si la personne a les droits flèches 4 et 5))

Les avantages d’avoir un référentiel SVN pour Talend Integration Suite Studio (TIS) sont :

  • une amélioration significative de l’accès aux projets. En effet les objets du projet seront stockés sous format XML (fichier plat) et non pas en base de données ce qui évitera le nombre important de requête SQL lors du démarrage pour rapatriés les informations du projet.
  • La possibilité de faire du versionning et donc de retrouver une version antérieure d’un job.

Pour pourvoir scheduler des jobs, un commandline est installé sur la plateforme ou est installé TAC. Des jobServers seront installés sur chaque serveur qui pourront servir de serveurs d’éxécution.

Le commandline permet de générer les scripts des jobs qui seront ensuite déposés sur les serveur d’exécution. C’est ensuite les jobserveurs qui exécuteront les ordres données par le commandline.

J’espère que cette petite présentation vous permettra de mieux appréhender la plateforme TIS…

Talend : la différence entre le tJava, tJavaRow et le tJavaFlex

Vendredi 11 septembre 2009

Tout d’abord il faut connaitre la structure d’un composant Talend. Ils sont conçus en 3 parties :
- Begin
- Main
- End

Le Begin et le End ne s’exécute qu’une fois, on peut ainsi y initialiser des valeurs. Le Begin ouvre la boucle et end la ferme.
Le main, lui, va traiter en boucle chaque ligne qu’il a en entré.

Maintenant voici la structure de ces 3 composants :
Le tJava n’a qu’un Begin donc il ne s’exécute qu’une fois . Il ne gère pas de flux de données (de type row) et est mis généralement seul ou en début de job et rattaché à un subjob par un trigger ( onComponentOk ou onSubjobOk)

Contrairement au tJava, le tJava Row n’a que la partie main. Il peut revevoir un flux et faire des traitement dessus en boucle. Il pourra créer un flux de sortie mais en l’initialisant. (exemple : row5.champ = row4.champ). Le schéma en entré et en sortie sera le même. Ce composant ne peut être qu’en milieu de job.

Et enfin le tJavaFlex est similaire au tJavaRow. La différence est qu’il a la particularité de créer automatiquement un flux de données en sortie à partir du flux de données en entrée (donc pas besoin d’initiatilisation). Ce composant a à la fois, le begin, main et end. Il peut donc être mis seul ou en début de job, ou même au milieu en prenant en compte le flux de données. c’est le plus flexible des trois.

J’espère que maintenant vous serez plus apte à développer votre code dans les composants de Talend.

Le typage Float avec Talend, un ennemi?

Mercredi 27 mai 2009

Aujourd’hui j’ai fait les frais du type Float avec Talend.

En effet j’avais un flux qui avait pour but de lire certains champs de fichiers Excel. Je les rapportaient en tant que String (typage Java du flux).

Ces champs étaient ensuite transformés en Float avant d’être stockés en base.

Le problème est qu’en base les chiffres étaient complètement incohérents.

La cause? le typage FLOAT…Du coup j’ai dû reconvertir, tous les champs qui étaient en float, en double afin que mon flux fonctionne correctement…

Donc à savoir, le type FLOAT n’est pas forcement notre ami!

Par ailleurs lors de la lecture des fichiers Excel, je me suis rendu compte que le format des cellules avaient beaucoup d’importance.

En effet quand je lisait une cellule avec un format “standard” (avec un schéma ou la cellule est considérée comme String pour Java), les chiffres étaient arrondis par exemple…Il fallait que les cellules soient en format “Nombre” pour que je puisse avoir la totalité des chiffres après une virgule…

Si le changement de typage est a effectué sur une centaine de fichiers…Je vous laisse imaginer…J’en conclu que la gestion des fichiers Excel n’est pas forcement facile avec Talend.

Après peut être que je manque d’expériences et qu’il y a une autre manière de faire…Dans ce cas n’hésitez pas à poster!