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 :

Talend erreur "Exception: outOfMemory"


Sujet :

Développement de jobs

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Talend erreur "Exception: outOfMemory"
    Bonjour,

    Je suis débutant dans l'utilisation de talend et en language JAVA. Dans le cadre de mon stage je réalise un moulinette qui permet de convertir un fichier XML. Dans mon Job, j'utilise différents composants (tXMLMap, tAggregateRow..). En réalisant mon job j'ai fait mes tests avec des fichier xml de taille inférieur à 30M et tout fonctionnait bien. Cependant, quand je veux convertir un fichier de 1GO, j'ai une erreur à l'exécution du job " Exception: outOfMemory... ". J'ai changé les paramètres de la mémoire mais le problème est toujours présent.
    Je vous remercie pour toutes suggestions me permettant de résoudre mon problème.

  2. #2
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    802
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 802
    Points : 1 698
    Points
    1 698
    Par défaut
    Cette erreur signifie l'espace utilisé par ton job utilise trop de mémoire.
    Vu que le tAggregateRow crée un cache, je ne suis pas surpris qu'un cache créé avec un fichier de 1GO fasse planter ta machine virtuel.
    Est'il possible pour toi d'utiliser un tSortedAggregateRow ?

    Sinon il va falloir que tu créer ton job en plusieurs phases. Et si tu souhaites que je t'apporte des technique avancé donne moi plus d'information sur ton travail. Quel type d'input utilises-tu ? shootscrenn...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je vous prie de m'excuser du retard et je vous remercie de vous intéressé à mon problème.
    Pour mieux expliquer mon problème, je vous joint une capture d'écran de mon job.
    Nom : Talend.PNG
Affichages : 335
Taille : 54,6 Ko

    Citation Envoyé par supergeoffrey Voir le message
    Cette erreur signifie l'espace utilisé par ton job utilise trop de mémoire.
    Vu que le tAggregateRow crée un cache, je ne suis pas surpris qu'un cache créé avec un fichier de 1GO fasse planter ta machine virtuel.
    Est'il possible pour toi d'utiliser un tSortedAggregateRow ?
    J'ai remplacé le tAggregateRow par un tAggregateSortedRow, mais quand j'exécute le Job, on m'affiche une erreur sur le type de donnée (int, string) sur lequel je réalise mes opérations.
    Le but pour moi est de récupérer la date min dans mon fichier XML. Celle-ci me permet part la suite de faire une différence avec toutes les dates courantes dans le fichier. Enfaite je réalise une conversion de la date en "dd'j'HH'h'mm'mn'ss's''000'. Pour la conversion nous avons besoin de définir la date min comme été la date "00j00h00mn00s000".

    Citation Envoyé par supergeoffrey Voir le message
    Sinon il va falloir que tu créer ton job en plusieurs phases. Et si tu souhaites que je t'apporte des technique avancé donne moi plus d'information sur ton travail. Quel type d'input utilises-tu ? shootscrenn...
    comme vue sur le le schéma que j'ai joint, j'utilise en entré un tFileInputXML (les deux tFileInputXML lisent le même fichier), le premier pour l'extraction de la date min et le deuxième pour la traitement proprement dit.
    Le tXMLMap_4 me permet d'extraire les données qui m'intéressent et de faire les transformations nécessaires sur ces données. La sortie du tXMLMapt_4 est relié à un tFileOuputXML. Ce dernier génère un fichier XML que par la suite je définis en entrée d'une fonction pour faire le regroupement des mes variables ayant des repère identique.

    Je suis disponible si vous avez besoin de plus d'information me permettant de résoudre mon problème et aussi d'optimiser le temps d'exécution de mon Job.

    Je vous remercie d'avance.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    SVP quelqu'un peut m'aider?

    Je vous remercie.

  5. #5
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    802
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 802
    Points : 1 698
    Points
    1 698
    Par défaut
    Citation Envoyé par SDK13
    J'ai remplacé le tAggregateRow par un tAggregateSortedRow
    Je t'es posé cette question
    Citation Envoyé par supergeoffrey
    Est'il possible pour toi d'utiliser un tSortedAggregateRow ?
    ça voulait dire tes données sont-elles triées

    Citation Envoyé par SDK13
    mais quand j'exécute le Job, on m'affiche une erreur sur le type de donnée (int, string) sur lequel je réalise mes opérations.
    Soit plus précis.

    Citation Envoyé par SDK13
    Le but pour moi est de récupérer la date min dans mon fichier XML. Celle-ci me permet part la suite de faire une différence avec toutes les dates courantes dans le fichier. Enfaite je réalise une conversion de la date en "dd'j'HH'h'mm'mn'ss's''000'. Pour la conversion nous avons besoin de définir la date min comme été la date "00j00h00mn00s000".
    Si j'ai bien compris ton problème, tu as qu'une date minimum?
    Pourquoi fais-tu une agrégation dans un tMap si tu as qu'une seule date minimum ? tu devrais parcourir deux fois ton fichier mais sans faire d'agrégation et de jointure.
    tXMLInput -row1-> tJavaFlex.
    |
    onSubjobOk
    |
    V
    tXMLInput -> tXMLMap -> tXmlOutput

    Le but est que dans le tJavaFlex on calcule ta date min.
    Donc dans le code de début tu dois initialiser mon minimum
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    Date minDate = TalendDate.parseDate("yyyyMMdd","99991231");

    Dans ton code principale tu es dans la boucle et tu testes si ta date courante est avant la date minimal afin de la modifier
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Date toCompare = .......C_EST-TOI_QUI_DOIT_CODER......... ;
    if(toCompare.before(minDate )){
     minDate = toCompare;
    }

    et dans le code de fin tu sauvegarde ta date minimale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    globalMap("MinDate",minDate );
    Le but de cette solution est d'avoir qu'une seule variable sans faire de cache


    Si j'ai pas compris ton problème fait voir ton tAggragateRow et ton tMap car tu n'es pas trop clair.

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