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 20/10/2011, 09h32   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 117
Points : 14
Points : 14
Envoyer un message via MSN à jam92400
Par défaut erreur java heap space

Bonjour à tous,

J'ai un problème lors que j'essaye d'executer une alimentation d'un fichier CSV contenant 600 000 lignes vers une table Oracle.
Le traitement s'arrete au bout de 3 min avec l'erreur suivante:

Code :
1
2
3
4
5
6
7
8
9
10
11
Exception IN thread "main" java.lang.Error: java.lang.OutOfMemoryError: Java heap space
	at test.test_dbint_0_1.test_DBINT.tFileInputDelimited_1Process(test_DBINT.java:4939)
	at test.test_dbint_0_1.test_DBINT.runJobInTOS(test_DBINT.java:5817)
	at test.test_dbint_0_1.test_DBINT.main(test_DBINT.java:5685)
Caused BY: java.lang.OutOfMemoryError: Java heap space
	at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2725)
	at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10689)
[statistics] disconnected
	at test.test_dbint_0_1.test_DBINT.tFileInputDelimited_1Process(test_DBINT.java:4773)
	... 2 more
Job test_DBINT terminé à 09:24 20/10/2011. [Code sortie=1]
J'ai tenté de grossir la memoire de la machine virtuel Java qui etait par defaut avec 2 valeurs 'Xms256M et Xmx1024M" et j'ai tout essayé en mettant Xmx2048M... mais rien n'y fait toujours la même erreur.

Avec moins de ligne ca marchait tres bien (100 000 lignes). De plus ce qui est bizarre c est que j'ai configuré pour faire des commit toutes les 300 000 lignes ( car il plantait au bout de la 369000 eme ligne) mais il ne commit rien

Merci pour votre aide
jam92400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 10h54   #2
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 816
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 : 816
Points : 1 089
Points : 1 089
On pourrait avoir un screenshot du job svp ?
car là j'ai du mal à comprendre où est-ce qu'il charge les données en mémoire.

En mettant le commit a 10 000 ?
__________________
Pensez à la fonction Recherche
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 11h11   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 117
Points : 14
Points : 14
Envoyer un message via MSN à jam92400
Par défaut erreur Java heap

alors en mettant un comit à 10 000 il plante aussi avec une autre erreur mais il insere bien les 10 000 ligne en bases mais apres il arrete

voilà le screen copy en PJ

et la nouvelle erreur avec un commit tous les 10 000 est celle-ci:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Démarrage du job test_DBINT a 11:07 20/10/2011.
 
[statistics] connecting TO socket ON port 3375
[statistics] connected
Exception IN component tOracleOutput_1
java.lang.ArrayIndexOutOfBoundsException: -32143
	at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2673)
	at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10689)
	at test.test_dbint_0_1.test_DBINT.tFileInputDelimited_1Process(test_DBINT.java:4773)
	at test.test_dbint_0_1.test_DBINT.runJobInTOS(test_DBINT.java:5817)
	at test.test_dbint_0_1.test_DBINT.main(test_DBINT.java:5685)
[statistics] disconnected
Job test_DBINT terminé à 11:07 20/10/2011. [Code sortie=1]
jam92400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 11h19   #4
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 816
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 : 816
Points : 1 089
Points : 1 089
Bug connu chez Talend http://jira.talendforge.org/browse/TDI-17987

il faut désactiver l'exécution parallèle dans les paramètres avancés du composant.

Ca fonctionne maintenant ?
__________________
Pensez à la fonction Recherche
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 11h32   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 117
Points : 14
Points : 14
Envoyer un message via MSN à jam92400
Par défaut erreur java heap

de quel composant? et il faut aller ou ?

Merci encore

il y a une copie d ecran avec les paramètre avancés du composant Oracle en PJ
jam92400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 12h40   #6
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
C'est au niveau du job dans le 1er onglet en bas, dans le menu extra.
Une remarque pour ton job tu devrais essayer d'utiliser le composant tOracleOutupBulkExec qui devrait mieux adapté au vue de ton job.
NicoL__ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 13h35   #7
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 816
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 : 816
Points : 1 089
Points : 1 089
Cette option n'est pas dans la version gratuite de Talend en effet.

Dans le JIRA, il y a "when I change commit every from 10000 to 1000,the job can work, but it isn't a solution". vous pouvez essayer de passer le commit à 1000 mais c'est moche.
__________________
Pensez à la fonction Recherche
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 14h21   #8
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
Et en diminuant la valeur Batch Size de l'option Use Batch Size, est-ce que cela résout le problème ?
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 14h25   #9
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 117
Points : 14
Points : 14
Envoyer un message via MSN à jam92400
Par défaut erreur java heap

salut Benoit

J'ai suivi tes conseils et j ai modifié la target en OracleOutputBulkExec et là effectivement ca plante plus d'ailleurs je peux les 647000 ligne affichés dans le Worflow, sans la moindre erreur

en revanche il m a rien inséré en base!

j'ai regardé les options avancées du composant mais je vois pas pourqupoi il m a rien inséré

tu trouveras une screen copy en PJ

Code :
1
2
3
4
5
6
7
8
9
10
Démarrage du job test_DBINT a 14:19 20/10/2011.
 
[statistics] connecting TO socket ON port 3858
[statistics] connected
 
SQL*Loader: Release 10.2.0.4.0 - Production ON Jeu. Oct. 20 14:19:47 2011
 
Copyright (c) 1982, 2007, Oracle.  ALL rights reserved.
[statistics] disconnected
Job test_DBINT terminé à 14:19 20/10/2011. [Code sortie=0]
Fichiers attachés
Type de fichier : doc screen-copy3.doc (182,0 Ko, 1 affichages)
jam92400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 14h30   #10
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 117
Points : 14
Points : 14
Envoyer un message via MSN à jam92400
Par défaut re

salyut Dev Nico

je vois ouu se trouve l'option Batch Size? j ai été partout dans le menu "Préférence" mais je vois pas
jam92400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 14h39   #11
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 816
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 : 816
Points : 1 089
Points : 1 089
En remplaçant le tOracleOutput par un tOracleOutputBulkExec le fonctionnement est très différent. Il faudrait voir si le sql loader n'a pas des logs de rejet.

Le job doit pouvoir fonctionner avec un simple tOracleOutput, avez-vous essayé avec ce composant et un commit à 1000 ?
Si vous n'utilisez pas les rejets, n'oubliez pas de cocher la case "terminer en cas d'erreur" dans le composant.
__________________
Pensez à la fonction Recherche
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 14h45   #12
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 jam92400 Voir le message
salyut Dev Nico

je vois ouu se trouve l'option Batch Size? j ai été partout dans le menu "Préférence" mais je vois pas
C'est dans les 'Advanced settings' du composant tOracleOutput.
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 14h45   #13
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 117
Points : 14
Points : 14
Envoyer un message via MSN à jam92400
Je viens de faire comme tu m'as dit:

j'ai modfié le composant pour remettre un OracleOutput classique en mettant

commit tous les 1000 (il m a inséré 2000 ligne en base et boum erreur:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Démarrage du job test_DBINT a 14:44 20/10/2011.
 
[statistics] connecting TO socket ON port 4076
[statistics] connected
Exception IN component tOracleOutput_1
java.lang.ArrayIndexOutOfBoundsException: -32143
	at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2673)
	at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10689)
	at test.test_dbint_0_1.test_DBINT.tFileInputDelimited_1Process(test_DBINT.java:4804)
	at test.test_dbint_0_1.test_DBINT.runJobInTOS(test_DBINT.java:6272)
	at test.test_dbint_0_1.test_DBINT.main(test_DBINT.java:6140)
[statistics] disconnected
Job test_DBINT terminé à 14:44 20/10/2011. [Code sortie=1]
jam92400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 14h46   #14
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 117
Points : 14
Points : 14
Envoyer un message via MSN à jam92400
Par défaut re

DevNico,

je vois pas cette option car j'ai la version gratuite de TALEND je pense
jam92400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 15h04   #15
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
Non, elle est bien disponible dans le TOS.

En français, ça doit être dans l'onglet Propriétés avancées du component, vers le bas.
C'est 'Taille du lot', à coté de 'Définir la taille des lots'.

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/10/2011, 15h06   #16
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 816
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 : 816
Points : 1 089
Points : 1 089
C'est clairement un bug de Talend, visiblement avec la version 10g d'Oracle.
Ils sont au courant du problème mais n'ont pas l'air très réactifs.
En plus du jira cité plus haut il y a des messages sur le forum :
http://www.talendforge.org/forum/viewtopic.php?id=5931
http://www.talendforge.org/forum/viewtopic.php?id=17966

Mais pour le contourner je ne vois que la solution proposée par Nicol_, utiliser le bulk. Par contre c'est limité comme solution de contournement.

Ou tester avec un commit every très gros genre 1000000.
__________________
Pensez à la fonction Recherche
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 15h07   #17
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 117
Points : 14
Points : 14
Envoyer un message via MSN à jam92400
oui tu as raison Nico il y a bien ce paramètre de taille de lot

et je dois l'augmenter c'est ca?

Je vais tester apres, là j'ai mis un cimmit tous les 1 ligne et ca tourne mais c est pas rapide sachant qu il ya 647000 ligne
jam92400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 15h12   #18
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
Personnellement je n'ai pas rencontré ce problème et j'utilise oracle 10g. Sinon le bulk vu la simplicité de ton job doit fonctionner sans problème, par contre ce composant nécessite une configuration plus poussée. Comme tout est écrit dans un fichier il faut que le séparateur utilisé ne rentre pas en concurrence avec du contenu...
Bref il faut regarder les log qui sont dans le répertoire du fichier tampon.
NicoL__ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 15h12   #19
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 117
Points : 14
Points : 14
Envoyer un message via MSN à jam92400
SUPER NICO !!!

Ca marche nikel !! j ai mis une taille de lot à 1000 000

et tous est passé et inséré avec des commit tous les 100 000

Merci !!!!
jam92400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 15h16   #20
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
Ah... Etrange.
Je pensais que tu allais le diminuer en fait
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h23.


 
 
 
 
Partenaires

Hébergement Web