IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement de jobs Discussion :

Traitement 8 millions de ligne


Sujet :

Développement de jobs

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Traitement 8 millions de ligne
    Bonjour à tous,

    Actuellement en début de stage sur Talend, je commence à perdre espoir.
    J'essaye de réaliser un traitement existant sous ODI qui concerne 3 tables:
    Ressource_header : 2.5 millions de ligne
    Ressource_line : 2.5 millions de ligne
    Ressource_thirds : 8 millions de ligne

    Lorsque j'éxécute ce traitement, j'ai plusieurs et différentes erreurs :
    - problème de heap size java
    - java.util.ConcurrentModificationException talend

    Vous trouverez en pj mon job (qui ne me semble pas très bien fait...). J'ai essayé de minimiser les données avec des tfiltercolumns.
    Mes jointures sont faites directement dans ma tMap et mes filtres dans les tFilterRows(pour diminuer les entrées dans mes tMap).

    Avant d'utiliser les tFilterColumns, j'ai tenté de modifier directement le select de la requête SQL mais sans succès, il y avait une erreur comme quoi il manquait un mot alors que la requête fonctionnait parfaitement sous PL/SQL developer.

    J'ai déjà modifier le fichier TOS_DI-win-x86.ini :
    -vmargs
    -Xms256m
    -Xmx1024m
    -XX:MaxPermSize=256m
    ce qui m'a donné java.util.ConcurrentModificationException talend

    L'erreur vient forcément de ma mauvaise manipulation de l'outil puisque, normalement, Talend est capable de rivaliser avec ODI et je pense que 8millions de ligne c'est pas la mort...

    Mes jointures se font sur deux champs
    h.chmp1=l.chmp1 h.chmp2=l.chmp2
    h.chmp1=t.chmp1 h.chmp2=t.chmp2
    Le premier traitement qui se déclenche est line=>filtercolumns=>filterRows
    Le second (celui qui pose problème ) thirds=>filterColumns_2

    Comment régler ou contourner ce problème récurrent ? Que faire pour réussir à traiter un gros volumes de données ? Comment optimiser mon job (je ne trouve aucun exemple...)?


    J'utilise "Talend Open Studio for Data Integration"
    Version: 5.0.2
    Build id: r78327-20120216-0244
    Pc avec Windows xp pro SP3, 3Go de Ram

    Merci d'avance pour votre aide !

    Dex
    Images attachées Images attachées  

  2. #2
    Membre émérite
    Avatar de haskouse
    Homme Profil pro
    Salesforce
    Inscrit en
    Août 2009
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Salesforce
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2009
    Messages : 923
    Points : 2 684
    Points
    2 684
    Par défaut
    Si j'ai bien compris ton job plante quand il est entrain de charger "thirds" et qui d'après ton message contient 8 millions de lignes.

    Je pense que c'est normal d'avoir un JavaHeapSpace.

    J'ai essayé une fois de charger une table de 3 millions de ligne est j'ai eu le même problème.

    J'ai remédié au problème en utilisant un tOracleOutputBulk, mais moi je voulais faire des insertions, pour toi qui veut faire une lecture je ne connais pas de composant de traitement des données en masse.

    Je ne vois que deux solutions:

    • Traiter les données par lot (million par million par exemple)
    • Augmenter la taille du JavaHeapSpace et par conséquent celle de ton poste.
    "Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant." Mohammed le Messager d’Allah (que la paix et le salut d'Allah soient sur lui)

    Tutoriels Talend
    Mes articles publiés
    Mon CV en-ligne

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Tout d'abord merci pour votre réponse. J'ai déjà tenté augmenter la taille de la jvm mais ça ne fonctionne pas et pour le moment je n'ai pas la possibilité d'augmenter la RAM de mon pc.
    Par contre je suis interessée par le traitement par lot. Quel est le composant Talend qui permet ce traitement ?
    Merci d'avance,
    Dex

  4. #4
    Membre émérite
    Avatar de haskouse
    Homme Profil pro
    Salesforce
    Inscrit en
    Août 2009
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Salesforce
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2009
    Messages : 923
    Points : 2 684
    Points
    2 684
    Par défaut
    regarde ce billet si ça peut t'aider.
    http://blog.smile.fr/Parallelisation...TL-avec-Talend
    "Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant." Mohammed le Messager d’Allah (que la paix et le salut d'Allah soient sur lui)

    Tutoriels Talend
    Mes articles publiés
    Mon CV en-ligne

  5. #5
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2011
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2011
    Messages : 201
    Points : 352
    Points
    352
    Par défaut
    Bonjour,

    J'ai également été confronté à cette problématique. J'ai pu obtenir le résultat souhaité en utilisant les 'prepare statement' (instructions préparés)?.

    Je t'invite à lire la documentation Talend TalendOpenStudio_Components_RG_50a_FR.pdf, et notamment la page 689
    concernant le scénario 'Scénario 2 : Utiliser l’instance PreparedStatement
    pour faire une requête sur des données' qui te donnera tous les éléments pour utiliser les 'prepare statement'.

    Bon courage,

  6. #6
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Mon problème est toujours présent mais vient du fait que ma machine n'est pas assez puissante.

    Sinon, j'ai réussi à avoir des améliorations de performances assez impressionnantes en :
    - ajoutant des cursor à mes tables en input (tDBInput =>Composant=>paramètres avancés=> Utiliser un curseur)
    - en activant les commit pour ma/mes tables en output (tDBOutput=>composant=>paramètres avancés=>commiter toutes les...)


    Dex

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/09/2007, 14h14
  2. Réponses: 1
    Dernier message: 08/03/2007, 10h47
  3. 100 million de lignes, 34 Go : partition ou autre ?
    Par Greg07 dans le forum Administration
    Réponses: 9
    Dernier message: 24/10/2006, 18h02
  4. Transferer 500 millions de lignes
    Par Kikoune dans le forum Oracle
    Réponses: 4
    Dernier message: 26/05/2006, 17h09
  5. [SELECT sur 16 millions de lignes] délai très grand
    Par localhost dans le forum Requêtes
    Réponses: 6
    Dernier message: 22/11/2004, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo