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 13/07/2011, 17h08   #1
Membre à l'essai
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2011
Messages : 20
Points : 20
Points : 20
Par défaut Sauvegarde en mémoire d'un OracleInput

Bonjour,

Actuellement sur un projet de transition d'ODI à Talend, je dois réécrire tous les jobs.
La même table peut être utilisée dans plusieurs jobs. Dans un souci d'optimisation, je me demandais si on devait toujours recharger toutes les données de la table ou s'il était possible de :
- sauvegarder ces données après le premier chargement
- les réutiliser pour les jobs suivants

Certaines tables contiennent 5 millions d'enregistrements et je trouve dommage de les recharger 2 à 3 fois d'affilée.

Débutant en Talend, je n'ai pas trouvé beaucoup de sujets sur ce problème.
Je vous remercierai beaucoup si vous pouviez m'éclairer.
LittleFr0g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 17h17   #2
Membre expérimenté
 
Avatar de NicoL__
 
Homme Nicolas
Inscription : janvier 2011
Messages : 378
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Localisation : France

Informations forums :
Inscription : janvier 2011
Messages : 378
Points : 528
Points : 528
Partager les données d'un table dans plusieurs job à moins qu'ils s'exécutent dans un temps très proche je ne vois pas l'interet, il y a un risque d'utiliser des données fausses.
Sinon c'est peut-être que ces jobs peuvent être regrouper dans un job en tant que sous job et prendre en entrée le même flux de données (en le démultipliant dans un tMap) et réaliser les traitements en parallèles.
NicoL__ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 17h33   #3
Membre à l'essai
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2011
Messages : 20
Points : 20
Points : 20
L'idée de démultiplier avec un tMap est intéressante mais ces jobs ne peuvent pas s'éxécuter de manière parallèle.

Je mets un exemple tout bête pour illuster mon propos :

JobA --On SubJobOK--> JobB

Et la même table est utilisée dans JobA et JobB.
Donc actuellement elle est chargée dans JobA et JobB, je trouve cela un peu dommage et peu efficace sachant que çà se répète 5 à 6 fois.
LittleFr0g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 17h49   #4
Membre expérimenté
 
Avatar de NicoL__
 
Homme Nicolas
Inscription : janvier 2011
Messages : 378
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Localisation : France

Informations forums :
Inscription : janvier 2011
Messages : 378
Points : 528
Points : 528
Je pense que tBufferOutput et tBufferInput devraient être la solution à ton problème.
NicoL__ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h00   #5
Membre à l'essai
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2011
Messages : 20
Points : 20
Points : 20
Je vais regarder de ce côté , merci.
Je ne sais pas encore bien comment on les utilise donc je vais essayer différentes choses.
LittleFr0g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 10h47   #6
Membre à l'essai
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2011
Messages : 20
Points : 20
Points : 20
En fait, après quelques essais, je me suis rendu compte qu'on ne pouvait utiliser qu'un tBufferOutput par job.
Si j'en utilise plusieurs, c'est en fait le même buffer qui est rempli et donc je ne peux pas en utiliser qu'un par table.

De plus, on ne peut utiliser le tBufferInput que dans un sous-job du tBufferOutput, on ne peut pas l'utiliser dans un job autre. Cela ne résoud donc pas mon problème car les données que je charge sont dans des jobs différents.

La méthode que je vois maintenant mais qui n'est pas très propre serait de sauvegarder les données que je réutilise plusieurs fois dans des fichiers. les entrées-sorties dans des fichiers sont sensés être plus rapides que celles avec Oracle non ?
LittleFr0g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 15h37   #7
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
Bonjour,

Citation:
Envoyé par LittleFr0g Voir le message
La méthode que je vois maintenant mais qui n'est pas très propre serait de sauvegarder les données que je réutilise plusieurs fois dans des fichiers. les entrées-sorties dans des fichiers sont sensés être plus rapides que celles avec Oracle non ?
Cela dépend de l'architecture technique, mais en général oui.

Après, il faut voir si c'est vraiment intéressant de se passer de la possibilité de faire des requêtes sur la base source, qui permettraient d'optimiser les traitements via des filtres ou des jointures avec d'autres tables.

De manière très théorique, si tu as besoin de lire plusieurs fois les mêmes informations d'une table, c'est peut-être qu'il faut revoir la stratégie d'alimentation.

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 15h58   #8
Membre à l'essai
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2011
Messages : 20
Points : 20
Points : 20
Citation:
Envoyé par DevNico Voir le message
De manière très théorique, si tu as besoin de lire plusieurs fois les mêmes informations d'une table, c'est peut-être qu'il faut revoir la stratégie d'alimentation.
Nicolas
Sur ce point, on est d'accord, c'est le problème principale je pense.
Etant débutant en décisionnel et n'ayant pas un grand champ d'action (je ne dois que faire la transition d'ODI à Talend), j'ai du mal à trouver une solution permettant d'optimiser sans "casser" le travail déjà fait.

Merci pour ta réponse avisée en tout cas
LittleFr0g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 11h29   #9
Membre expérimenté
 
Avatar de NicoL__
 
Homme Nicolas
Inscription : janvier 2011
Messages : 378
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Localisation : France

Informations forums :
Inscription : janvier 2011
Messages : 378
Points : 528
Points : 528
tBufferInput est utilisé dans des sous job pour justement permettre d'utiliser les données lues dans le Job principale.
Dans ton cas je ne vois pas le problème, soit JobA et JobB peuvent être sous job d'un principal qui mets les données des le buffer.
Si ce sont des job a parts entière qui peuvent s'exécuter indépendamment et bien il n'y a pas vraiment de raison qu'ils utilisent les même données car ces données peuvent avoir changé entre les exécutions des job.
Pour info le tBufferOutput utilise un fichier.
NicoL__ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 11h54   #10
Membre à l'essai
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2011
Messages : 20
Points : 20
Points : 20
Citation:
Envoyé par NicoL__ Voir le message
Dans ton cas je ne vois pas le problème, soit JobA et JobB peuvent être sous job d'un principal qui mets les données des le buffer.
Ceci n'est valable que pour une seule table aussi, j'aimerai bufferiser plusieurs tables mais cela les met dans le même buffer.


Citation:
Envoyé par NicoL__ Voir le message
Si ce sont des job a parts entière qui peuvent s'exécuter indépendamment et bien il n'y a pas vraiment de raison qu'ils utilisent les même données car ces données peuvent avoir changé entre les exécutions des job.
Ce sont des jobs qui doivent s'éxécuter l'un après l'autre mais qui utilise pour certains les mêmes données. Ces données sont arrêtées à un certain moment donc non, elles ne peuvent pas avoir changées.

J'avoue être un peu perdu là à essayer différentes choses, je ne dois peut-être pas bien expliquer mon problème.
Je reposterai si des fois je sors du trou. Merci en tout cas
LittleFr0g 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 00h12.


 
 
 
 
Partenaires

Hébergement Web