Blog myBlog = BlogFactory.getWordPressBlog();
Article tagué Talend Open Studio
Utiliser Java 7 dans Talend Open Studio
31/10/11
Il y a quelques temps que je n’avais pas retouché à Talend Open Studio. Mais le Talend Partner Summit du mois dernier m’a donné l’occasion de recroiser des connaissances, et d’en apprendre un peu plus sur l’avenir du produit (« plate-forme unifiée », « big-data avec Hadoop« , etc.). Et surtout, ce fut une journée qui m’a donné envie de me replonger un peu dans le produit. En particulier, je me suis posé la question de la possibilité de développer de nouveaux composants en utilisant Java 7. En particulier l’API NIO2 qui apporte de nombreuses fonctionnalités qu’il me semble intéressant d’exploiter :
- accès (en lecture et en écriture) à de nouvelles propriétés des fichiers : propriétaire, permissions, gestion des liens symboliques et des fichiers cachés, etc.
- surveillance native des évènements (création/modification/suppression d’un fichier)
- plus grande simplicité et meilleures performances lors de l’accès et du parcours des fichiers avec Files
- etc.
Configurer Talend Open Studio
Lancer Talend Open Studio avec Java 7
1 2 | -vm /usr/lib/jvm/java-7-jdk/bin/java |
Enregistrer le JDK 7 dans le studio
Utiliser du Java 7 dans Talend Open Studio
L’ensemble des préparatifs étant terminé, il est maintenant possible d’utiliser les classes de Java 7 dans Talend Open Studio :
- dans les différents composants permettant d’écrire du code directement (tJava, tJavaRow, tJavaFlex, etc.).
- en créant soit-même de nouveaux composants.
Partager un projet Talend Open Studio avec git
26/03/11
Récemment, OCTO a publié deux bons billets sur les implémentations de services REST et sur leur testabilité. Je vais donc laisser ce sujet de côté pour le moment et différer le billet que je comptais écrire sur le sujet.
Depuis déjà pas mal de temps, je m’intéresse aux « forges logicielles », en particulier autour de des technologies Java. Dans ce cadre, j’ai testé plusieurs outils de suivi d’anomalies/évolutions : Mantis, JIRA, Redmine, etc.
D’après ce que j’ai pu voir, de nombreux clients utilisent Mantis pour le suivi des anomalies. Dans la forge mise en place en interne, nous utilisons plutôt Redmine (la suite des produits Altassian est également excellente, mais nécessite d’avoir le budget), en particulier pour son excellente intégration avec git :
- possibilité de lier des commits aux fiches Redmine
- pilotage automatique de la résolution et du « time-tracking » des fiches en extrayant automatiquement ces informations des commits git
- visualisation dans l’interface Redmine des diffs
- calcul et affichage de statistiques sur le dépôt du projet
Afin de pouvoir utiliser simultanément ces différents produits (Mantis du client et Redmine ou JIRA interne), j’ai pensé créer un projet Open Source permettant de synchroniser les données entre ces différents produits, en utilisant Talend Open Studio. Pour cela, il fallait donc réussir à partager ce projet en utilisant git (afin de le rendre accessible sur GitHub).
IDEA pour le développement de composants Talend
8/11/10
J’ai récemment été impressionné par la version « Community« d’IntelliJ IDEA pour le développement Java.
Même si j’ai depuis rencontré quelques problèmes avec cet IDE (au niveau de la gestion de configuration et de l’encodage des fichiers principalement), j’en suis très satisfait. J’ai donc testé la version « Ultimate« , qui m’a tout autant impressionné, et l’offre de mise à jour gratuite vers la version 10 a achevé de me convaincre : je me suis donc offert une licence de cette version.
Outre le développement Java-J2EE, j’ai voulu tester cet IDE pour le développement de composants Talend. Après quelques manipulations, il s’est avéré qu’il était beaucoup plus agréable à utiliser et puissant que le « Component Designer » fourni avec la suite Talend. Voici donc comment procéder pour avoir un très bon environnement de développement de composants :
La suite >
Créer un benchmark avec Talend Open Studio
7/09/10
Logback
Les vacances sont finies… et le ralentissement estival au travail également. Vous le remarquerez donc certainement, je vais malheureusement avoir moins de temps que cet été pour publier des articles. Mais j’ai tout de même eu le temps de regarder deux ou trois choses qui étaient sur ma « TODO » depuis longtemps.
En particulier le Framework Logback (à ne pas confondre avec le backlog de Scrum), qui est « le successeur » de Log4J :
- le fondateur du projet Log4J, Ceki Gülcü, travaille maintenant au développement de Logback
- le code initial de Logback est un refactoring du code de Log4J, avec un certain nombre d’améliorations (modularité, performances, etc.)
- la communauté de Logback est très dynamique (3 versions dans le courant du mois de juin), alors que les développements de Log4J semble ralentis : une branche 1.3 arrêtée, la branche 2.0 encore expérimentale, et la version qui a précédé la 1.2.16 (parue en avril 2010) datait de 2007
Je n’avais pas jusqu’à maintenant eu l’occasion de l’utiliser car Log4J reste la référence imposée par la DSI sur la plupart de mes projets (et il est vrai que je n’ai jamais eu de soucis avec).
Création du benchmark
Cette étude du Framework Logback a été un très bon prétexte pour détourner le fonctionnement habituel de Talend Open Studio, afin de créer un test comparatif des performances de Log4J et Logback.
J’ai ainsi développé de nouveaux composants dédiés à l’utilisation de logback dans TOS (ceux pour Log4J existaient déjà), afin de réaliser ce test. Une fois ce développement effectué, on peut s’attaquer au développement du benchmark lui-même. Et avec Talend Open Studio, c’est très simple :
- Lecture de la configuration du Framework
- Démarrage du chronomètre
- Génération d’un nombre significatif de lignes de données et log de ces lignes
- Fin du chronomètre
Il suffit ensuite de modifier la configuration du framework pour faire varier le test : la configuration de Logback est très similaire à celle de Log4J, et la prise en main du Framework est donc immédiate.
Afin de réaliser un comparatif entre Log4J et Logback, on réalise un job identique, mais avec cette fois le logger Log4J.
Conclusion
L’avantage d’être passé par Talend pour générer ces petits traitements de test :
- La rapidité de développement (si je mets de côté le temps de développement des composants eux-mêmes) : je n’ai eu qu’à placer et à enchainer correctement les composants pour obtenir le traitement souhaité, au lieu de devoir écrire le code à la main : c’est beaucoup plus rapide.
- Le composant « tRowGenerator » me permet de faire varier très rapidement mes cas de test : niveau de log des messages envoyé fixe, cyclique, aléatoire…
- La génération automatique du code m’assure que le code est le même pour les deux Frameworks. Les différences de temps d’exécution ne proviennent donc que des Frameworks eux-mêmes.
Il ne reste plus qu’à trouver des cas de test pertinents et à les exécuter…
Nouvelles fonctions d’agrégation pour Talend Open Studio
6/08/10
Spécifications
Récemment, j’ai été confronté à la problématique suivante, en apparence assez simple : un fichier contenant une liste d’opérations bancaires. Chacune de ces opérations correspond (entre autres) à un client et à un statut booléen (opération approuvée ou rejetée). Pour simplifier, on supposera qu’une opération n’est constituée que de ces deux attributs.
Le but était de trier les clients en deux catégories : ceux dont toutes les opérations ont été approuvées, et ceux ayant eu au moins une opération rejetée (l’équivalent sur le fichier d’un « GROUP BY » SQL).
Analyse
Pour réaliser cette opération, j’ai évidemment sorti mon ETL préféré, Talend Open Studio et son composant tAggregateRow. Mais là, petite surprise : il n’existe pas de fonction d’agrégation « booléenne » (et logique, ou logique, etc.). Et comme il n’existe pas de relation d’ordre sur les booléens, impossible d’utiliser directement les fonctions MIN ou MAX.
Contournement
Dans un premier temps, la solution de contournement n’a pas été difficile à trouver (il en existe d’ailleurs un certain nombre) : convertir les « true » en « 1″ et les « false » en « 0″. Avec cette transformation, la fonction booléenne « ET » est représentée par la fonction mathématique « MIN » et la fonction booléenne « OU » par « MAX » dans l’agrégation. Après cette agrégation, il suffit de faire la transformation inverse pour revenir à des booléens. En plus de la lecture du fichier et de l’écriture de la sortie, il suffit donc de 3 composants pour réaliser le traitement souhaité.
Amélioration du composant
Je suis maintenant en vacances, et j’ai donc le temps de reprendre ce problème à tête reposée. Deux composant pour faire deux transformations inverses, cela ne me satisfaisait pas. Je me suis donc penché sur l’étude du composant tAggregateRow, pour voir comment étendre ses fonctionnalités aux agrégations de champs booléens.
Je comptais en profiter de ce cas d’utilisation pour commencer un tutoriel sur le développement et l’amélioration de composants, mais je suis revenu sur cette idée : le composant tAggregateRow n’est pas des plus simples (il est en particulier constitué de deux sous-composants techniques tAggregateIn et tAggregateOut), et n’est donc à mon avis pas un bon exemple pour aborder les généralités du développement de composants, mais ce n’est que partie remise.
Je passe donc directement à la conclusion : depuis le 29 juillet 2010, vous trouverez sur Talend Exchange le composant bcAggregateRow, permettant d’agréger des champs booléens avec les fonctions booléennes « ET », « OU », et « OU EXCLUSIF ».
Tutoriel Talend : trouver les acronymes manquants
22/07/10
Ce tutoriel est la suite des deux précédents : mise en place des métadonnées et création d’un job élémentaire de nettoyage.
Lors du dernier tutoriel, nous avons créé un job très simple : lecture d’une donnée, remplacement de son contenu, et mise à jour en base. Nous allons poursuivre sur la même problématique, mais cette fois-ci, créer un job nécessitant plus de composants et de logique.
Après avoir supprimé les acronymes des billets de WordPress, je me demande si tous ceux que j’ai supprimés sont bien référencés dans le plugin « acronyms« , afin de rajouter ceux qui manqueraient (et ainsi ne pas perdre d’informations).
Encore une fois, une vérification manuelle serait longue et fastidieuse. Et encore une fois, c’est Talend qui va nous éviter ce travail…
La suite >
Job de nettoyage des articles
15/07/10
Voici la deuxième partie de ce tutoriel sur l’utilisation de TOS (rappel : première partie sur la création des métadonnées). Maintenant que les connexions aux bases de données sont configurées, nous pouvons commencer à travailler.
Nous allons donc créer un job simple, dont le but est de nettoyer les articles qui ont été migrés sur WordPress. Par « nettoyer », j’entends par exemple « supprimer les acronymes » qui avaient été insérés dans les articles. Ceux-ci n’ont plus de raison d’être, puisqu’ils sont maintenant dynamiquement renseignés par le plugin « acronyms ».
La suite >
Quand Talend m’évite un travail fastidieux
10/07/10
Au cours des différents articles de ce blog, j’ai souvent parlé des outils de Talend, dont je suis fan car ils rendent bien des services dans le travail informatique.
Aujourd’hui, j’ai l’occasion de vous présenter un cas d’utilisation plus personnel, où ces mêmes outils m’ont permis d’éviter un travail bien ennuyeux. Je vous ai présenté récemment la procédure de migration que j’ai utilisée pour passer de Dotclear à WordPress.
Cette procédure n’a pas été au bout des choses et il me restait un certain nombre de petits ajustements à effectuer :
- Migrer les liens
- Migrer les réponses aux commentaires du plugin Comback 2.0
- Supprimer les acronymes de mes anciens billets (ils sont maintenant automatiquement ajoutés par le plugin Acronyms)
- Corriger les liens internes entre les anciens billets : ils ne sont plus valables
Mis bout à bout, ces différentes actions sur 65 billets constituent un travail non négligeable… et d’un intérêt proche de 0. C’est à ce moment que Talend intervient, car il m’a permis d’automatiser ces différentes tâches.
S’agissant d’un cas d’étude simple, je pense qu’il peut constituer un bon tutoriel sur un cas d’utilisation réel de cet outil. Voici donc la première partie de ce tutoriel.
La suite >
Quelques sorties Open Source
14/06/10
Je “profite” d’un arrêt maladie à domicile pour publier une petite liste des sorties récentes de logiciels qui m’ont particulièrement intéressé !
Talend
Tout d’abord, la version 4.0.2 des outils de la suite Talend. La liste des corrections est disponible sur le bugtracker.
Par ailleurs, la première “milestone” de la future version majeure 4.1.0 peut être téléchargée.
Au passage, si vous utilisez plusieurs produits de la suite, j’en profite pour recommander de télécharger la version Talend MDM CE : celle-ci regroupe en un seul environnement Eclipse les produits TOS, TOP et Talend MDM, ce qui est très pratique !
Lotus Symphony
J’ai déjà eu l’occasion de parler de cette suite Open Source, dont l’ergonomie m’avait séduit. Il y a 5 jours, une nouvelle béta version est parue (la numéro 3).
J’ai installé celle-ci et elle demeure prometteuse : en particulier la lenteur d’affichage au premier chargement des onglets a été corrigée !
Restent maintenant plusieurs questions qui seront déterminantes dans mon choix de l’utiliser régulièrement :
- cette version étant basée sur OpenOffice, les plugins de ce dernier fonctionneront-ils ? Pour l’instant, la réponse est non : impossible d’ouvrir les fichiers d’extension “oxt”
- les documents générés seront-ils vraiment 100% compatibles avec OpenOffice ? En théorie, oui puisqu’ils se basent sur le format “Open Document”, mais dans la pratique, j’ai déjà eu des surprises et je me méfie donc…
Mise à jour le 16/06/2010 : Je viens de me rendre compte qu’une version 3.2.1 d’OpenOffice est également parue récemment. Outre quelques corrections de bugs, elle permet à Oracle (comme sur tous les autres anciens produits de Sun) d’apposer ses logos et Copyrights en remplacement des anciens. Par ailleurs, la roadmap du projet est prometteuse, avec en particulier pour la fin de l’année la version 3.3 et le début du projet Renaissance (refonte graphique de la suite). En particulier à cause des deux réserves ci-dessus sur Lotus Symphony, je pense que je resterai sur le logiciel de référence OpenOffice pendant encore quelques temps. Fin de mise à jour
Pinta et yEd
Pinta est un éditeur d’images Open Source, se voulant un clone de l’excellent Paint.NET en version multi-plateformes, dont la version 0.3 très prometteuse est parue au début du mois de mai.
yEd, est un très bon éditeur de diagrammes, lui aussi multi-plateformes (développé en Java), dont la version 3.5.0.2 est parue.
Nombreuses sorties dans le monde Java
4/05/10
Le retour des beaux jours est riche en nouvelles versions (et en annonces de nouveautés) pour la communauté Java :
- Le repository Nexus pour Maven 2 en version 1.6.0 : cf. la liste des nouveautés.
- La version 3.0 (immédiatement suivie de la 3.0.1) de JRebel, un outil permettant de gagner du temps dans les développements en prenant en compte les modifications de code “à chaud” dans la JVM, sans avoir à procéder à un arrêt-déploiement-relance de l’application (qui peut être très long sur des applications complexes). Cet outil offre un support spécifique pour la prise en compte de modifications dans la plupart des Frameworks (Hibernate, EJB, Spring, etc.)
- Le SpringSource TC Server 2.0 (un serveur Tomcat customisé pour l’utilisation de Spring).
- Nouvelle version de Groovy.
- Le serveur d’intégration continue Teamcity, qui passe en version 5.1, suivie par une version de correctifs 5.1.1. Par rapport à mon serveur d’intégration continue fétiche Hudson (dont une nouvelle version est publiée chaque semaine), Teamcity est également extensible par des plugins, mais n’est malheureusement pas Open Source. Cependant, une version gratuite existe, limitée à 20 projets et 20 utilisateurs (ce qui est très généreux par rapport à d’autres licences d’évaluations, et amplement suffisant pour tester l’outil). Au delà du Java, l’énorme avantage de cet outil est qu’il gère également l’intégration continue des projet .NET (ce qui permet de mutualiser la plateforme IC des entreprises travaillant sue les deux technologies).
- Patch du serveur d’applications Glassfish (en version 2.1.1). On remarque d’ailleurs sur cette page d’accueil la volonté d’Oracle qui (heureusement) ne compte pas abandonner ce serveur : les versions professionnelles du serveur (qui existaient déjà du temps de Sun) ont été renommées en “Oracle Glassfish Server”.
- Une nouvelle “Milestone” (la 7ème) de la future version “Helios” d’Eclipse, qui sortira en version définitive le 23 juin selon la roadmap officielle.
- Annonce de la sortie de VMForce, une solution de Cloud Computing Java pour les développeurs. Cette solution est annoncée conjointement par VMWare et SalesForce, et fait déjà couler beaucoup d’encre, car elle pourrait concurrencer la plateforme de Google, la “Google App Engine”, avec des options orientées pour l’entreprise ; intégration de Spring, d’une persistance de données Haute Disponibilité, etc. Pour plus d’informations sur ce sujet très intéressant, je recommande le billet de developpez.com.
Ces nouveautés sont toutes plus alléchantes les unes que les autres… le soucis étant malheureusement comme toujours le manque de temps disponible pour s’en occuper !
Mise à jour le 06 mai 2010 : A peine deux jours et Je m’aperçois que de nouveaux outils sont apparus (et que j’en avais oubliés) :
- La version 4.0.1 des produits Talend est parue. Elle corrige de nombreux bugs de la version 4.0.0 (dont un particulièrement gênant pour les développeurs de composants dans Talend Open Studio : la disparition de l’éditeur XML)
- La version 2.1 de Sonar, apportant un ensemble de nouvelles fonctionnalités (validation de nouvelles règles, nouvelles métriques et options de recherche, meilleure intégration avec Maven, etc.)
- La première beta du très attendu Maven 3. Pour mémoire, je recommande cet article de Romain Linsolas faisant la liste des nouveautés qu’il doit apporter.
- La version 3.5 de yEd, mon éditeur de diagrammes préféré : la liste des nouveautés est sur la page de téléchargement.


