Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Talend
Talend Forum d'entraide sur Talend (Talend Open Studio, ...). Avant de poster --> FAQ Talend, Tutoriels Talend
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/03/2011, 19h37   #1
Membre du Club
 
Inscription : février 2004
Messages : 197
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 197
Points : 57
Points : 57
Envoyer un message via MSN à subzero82 Envoyer un message via Yahoo à subzero82 Envoyer un message via Skype™ à subzero82
Par défaut chaîne de jobs avec un comportement transactionnelle

Bonjour,

Je suis nouveau dans le monde des ETL et surtout celui de Talend,

J'aurais une question assez basique : est il possible de faire une chaîne de jobs qui se comporte comme une transaction ? C.a.d en cas de problème dans l'un des sous jobs ==> Rollback pour tout les sous jobs.

Je précise que dans la chaîne de jobs il en existe certains qui manipulent des fichiers et non une base de données.

Mon objectif étant réaliser une chaîne de jobs capable de laisser la totalité du système (source, et les différentes cibles) dans un état cohérent.

Merci d'avance.
subzero82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 12h25   #2
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 812
Détails du profil
Informations personnelles :
Nom : Benoit Durand
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Consultant en Business Intelligence Freelance

Informations forums :
Inscription : mars 2005
Messages : 812
Points : 1 084
Points : 1 084
Dans Talend, on gère généralement la transaction au niveau du job.
Donc si l'alimentation est organisé dans le même job sans sous jobs (tRunJob) alors ce sera facile à faire.
Si le but est de créer une sorte de séquenceur qui lancera un seul et qui devra tout faire dans une seule transaction alors je conseillerai de passer par des tables de travail intermédiaires.

Alimenter ces tables et finalement dans un seul job copier le contenu de ces tables dans les tables finales. Dans certains cas ça risque d'être difficile.

D'autres stratégies sont possibles. A voir avec le niveau de cohérence demandé ^^
__________________
Pensez à la fonction Recherche
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 15h13   #3
Membre du Club
 
Inscription : février 2004
Messages : 197
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 197
Points : 57
Points : 57
Envoyer un message via MSN à subzero82 Envoyer un message via Yahoo à subzero82 Envoyer un message via Skype™ à subzero82
Bonjour Benoit,

Merci pour ta réponse,

Ce qui me pose problème, c'est surtout au niveau des fichiers.
lorsque j'ai un job dans lequel au milieu (entre deux BDD), j'ai une exportation en *.CSV. Comment garantir la cohérence du système si un crache du système survient lors de l’écriture de ce fichier *.csv.

Je dois être en mesure de dire au job de reprendre à partir de l'étape où il a échoué et de ne pas prendre en compte le précédent fichier car il n'est pas bon.

Je suppose que c'est à moi de gérer cela dans le job et qu'il n'existe pas de mécanisme pour gérer les transactions sur une chaîne de jobs.
subzero82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 16h15   #4
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 812
Détails du profil
Informations personnelles :
Nom : Benoit Durand
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Consultant en Business Intelligence Freelance

Informations forums :
Inscription : mars 2005
Messages : 812
Points : 1 084
Points : 1 084
Avec TOS c'est possible en mettant tout une architecture de suivi des alimentations dans des tables. Le but est de repérer le job qui a planté et de relancer à partir de ce dernier via le séquenceur.

Si c'est pour ne pas traiter certains fichiers qui seraient incorrectes, il faudrait les déplacer dans un dossier d'erreur lorsqu'ils sont détectés par exemple.
__________________
Pensez à la fonction Recherche
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 17h23   #5
Membre émérite
 
Homme Nicolas Saumande
Architecte Décisionnel
Inscription : février 2008
Messages : 693
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Saumande
Âge : 36
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Architecte Décisionnel

Informations forums :
Inscription : février 2008
Messages : 693
Points : 879
Points : 879
Citation:
Envoyé par subzero82 Voir le message
Je suppose que c'est à moi de gérer cela dans le job et qu'il n'existe pas de mécanisme pour gérer les transactions sur une chaîne de jobs.
Bonjour,

Effectivement cela doit être géré dans chaque job. Il n'y a que sur les accès base de données que l'on peut gérer des systèmes de commit et de rollback.

De manière générale, je conseille de faire en sorte que chaque traitement unitaire (du point de vue de l'ordonnancement) soit réentrant.
Cela permet de relancer le traitement en cause sans avoir à réaliser d'opération manuelle.

C'est la plupart du temps réalisable sans trop se prendre la tête et permet une exploitation nettement simplifiée.

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 10h39   #6
Membre du Club
 
Inscription : février 2004
Messages : 197
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 197
Points : 57
Points : 57
Envoyer un message via MSN à subzero82 Envoyer un message via Yahoo à subzero82 Envoyer un message via Skype™ à subzero82
Merci pour toute vos réponses,

Je suppose Benoit, que le séquenceur n'existe pas dans la version Open studio de Talend (Peux tu me le confirmer ?).
subzero82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 13h29   #7
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 812
Détails du profil
Informations personnelles :
Nom : Benoit Durand
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Consultant en Business Intelligence Freelance

Informations forums :
Inscription : mars 2005
Messages : 812
Points : 1 084
Points : 1 084
Un séquenceur dans Talend (contrairement à Datastage par exemple) est un job comme un autre. A vous de le créer comme bon vous semble.

Le composant tRunJob qui permet de lancer d'autres jobs est dispo dans TOS. A partir de cela il est possible de faire un séquenceur.
__________________
Pensez à la fonction Recherche
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 15h07   #8
Invité régulier
 
Homme abdo CHE
Ingénieur développement logiciels
Inscription : novembre 2009
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme abdo CHE
Localisation : Maroc

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : novembre 2009
Messages : 6
Points : 6
Points : 6
Citation:
Envoyé par Benoit_Durand Voir le message
Un séquenceur dans Talend (contrairement à Datastage par exemple) est un job comme un autre. A vous de le créer comme bon vous semble.

Le composant tRunJob qui permet de lancer d'autres jobs est dispo dans TOS. A partir de cela il est possible de faire un séquenceur.
Bonjour,

J'ai le même problème:

J'ai un job avec deux insertions dans deux tables, 1 au niveau d'une base de données oracle et le 2 emme au niveau d'une base de données Mysql

Mon besoin c'est de faire un Rollback générale cad:

si j’insère une ligne dans le 1 er table, alors que cette insertion n'a pas eu lieu alors pas de commit au niveau de la 2 emme table

ie: soit commit pour les deux SGBD soit rollback pour les deux.

Merci d'avance
cheqrouni est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 17h01   #9
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 812
Détails du profil
Informations personnelles :
Nom : Benoit Durand
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Consultant en Business Intelligence Freelance

Informations forums :
Inscription : mars 2005
Messages : 812
Points : 1 084
Points : 1 084
Si les 2 sous-jobs sont OK alors il faut faire un commit et si l'un d'entre eux est KO alors il faut faire un rollback.
La qestion est donc de comment savoir que les 2 sont OK.
Il faut peut être gratter dans le code généré pour voir si des variables sont mises à jour à la fin des sous-jobs.
Sinon il sera possible de faire un +1 dans une variable globale lorsque chaque sous-job est ok et de tester cette variable. Si elle est égal à 2 alors commit sinon rollback.
__________________
Pensez à la fonction Recherche
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h20.


 
 
 
 
Partenaires

Hébergement Web