|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Bonjour à tous,
J'ai une application (qui n'a rien à avoir avec Talend) qui tourne et insère des lignes dans un fichier. Je voudrais savoir si c'est possible de récupérer ses lignes en temps réel et les insérer dans une table. Exemple si l'application écrit une ligne à 12h39min44sec, il faut que le job récupère cette ligne et la met dans la table. Idéalement (je ne sais pas si je dis une bêtise ou pas je suis un peu novice sur Talend) le job s'endort et se réveille dès qu'il détecte une ligne écrite par l'application dans le fichier log. Je vous remercie |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Consultant en Business Intelligence Inscription : mai 2006 Messages : 275 ![]() |
Talend ne peut pas faire cela à ma connaissance.
Par contre, il peut tourner régulièrement et prendre les nouvelles à chaque fois (toutes les minutes par exemple) |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Merci pour ta réponse.
Et comment faire pour le faire tourner toutes les minutes par exemple ? |
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Consultant en Business Intelligence Inscription : mai 2006 Messages : 275 ![]() |
Ca, c'est une question d'ordonnancement, pas de Talend
Si tu as la solution TIS, je crois qu'il existe un ordonnanceur intégré qu'il suffira de paramétrer. Si tu n'as que TOS, il faudra t'appuyer sur autre chose : l'ordonnanceur de ton entreprise/client s'il en existe un ou l'ordonnanceur intégré à ton OS (cron sous linux, tache planifiée sous Windows). Concernant les problématiques de "savoir quelle ligne à bougé", il va de soit que tu dois développer quelque chose pour le détecter toi même (en général on s'appuie sur une table de paramètres qui stocke la date de dernier chargement et on prend ce qui est arrivé depuis) |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Je te remercie,
L'équipe ITS peut me faire une chaine contrôle M qui lance le job chaque minute par exemple. Par contre pour savoir les nouvelles lignes je ne pourrais pas m'appuyer sur la date d'insertion puisque l'application dont je parle ne fournit pas justement la date (tomcat) Je ne sais pas si c'est une bonne solution ou pas mais pense tu que c'est possible de faire recours à une table temporaire (ou fichier) dans laquelle je mets toutes les lignes qui ont été traitées puis faire la différence (en SQL minus ou un truc de ce genre) avec le nouveau contenu du fichier log et ne traiter que les nouvelles lignes |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : août 2005 Messages : 117 ![]() |
En outre, il peut être judicieux de traiter le problème différemment. Si tu as besoin d'une interface intégrant des données en temps réel dans une base, peut être qu'il ne te faut pas lire le fichier généré mais plutôt mettre en place un web service.
Ton application tierce pourra toujours créer une ligne dans le fichier ET appeler le web service en question. En outre, il est relativement aisé d'exposer un job Talend sous forme de web service. |
|
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() Inscription : janvier 2009 Messages : 159 ![]() |
Merci
Donc si j'ai bien compris il faut créer un web service et l'attacher à l'application. Dans ce cas l'application continue à écrire les lignes dans le fichier log et le web service va mettre à jour un autre fichier ou exploiter le même fichier log ? |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : août 2005 Messages : 117 ![]() |
Tu as plusieurs solutions plus ou moins "propres". Dans les deux cas, ton application tierce peut continuer à écrire dans le fichier (sauf si ce n'est exploité que par ton interface talend).
Tu peux soit mettre en place une méthode PUSH soit du PUSH & PULL (mais la deuxième solution n'a guère d'intérêt sauf cas particulier). PUSH : Appli tierce --> Push des données lors de l'appel au job talend déployé en temps que web service. L'interface Talend, elle, va traiter les éventuelles transformations et intégrer les données dans la base cible. Je préconise un push dans le cadre d'un temps réel si tu fais du traitement unitaire et non pas par lot car elle est plus cohérente et permet de n'échanger que la donnée à intégrer dans ta base cible. |
|
|
00
|
|
|
#9 | |
|
Membre éclairé
![]() Consultant en Business Intelligence Inscription : mai 2006 Messages : 275 ![]() |
Citation:
Enfin bon, pas grave. Tu peux effectivement charger tes données dans une table temporaire et faire un minus, mais cela risque de te prendre plus de la minute qui t'es impartie avant que l'itération suivante se lance, il faut donc faire bien attention à la façon dont tu fais ton traitement. Si tu restes sur une optique ETL, il faut tester ton traitement sur un énorme fichier et paramétrer ton ordonnanceur pour qu'il lance ton job avec un intervalle de 5 fois la durée de ton test (histoire de prévoir l'évolution de la taille de ton fichier, de ta base, du fait que le serveur devra peut-être exécuter autre chose en même temps). De plus, tu devras faire en sorte que 2 itérations de ton job ne se chevauchent jamais au risque de te donner des résultats totalement incohérents. Pour l'idée du web service, ça fonctionne sous TOS de mettre Talend en WS? |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com