Résoudre des problèmes de mémoire lors de l'utilisation du tMap - 7.0

Guide d'utilisation de Talend ESB Studio

EnrichVersion
7.0
EnrichProdName
Talend ESB
EnrichPlatform
Studio Talend
task
Création et développement

Lorsque vous devez traiter un nombre important de données, par exemple, de nombreuses colonnes, différents types de colonnes ou lignes, votre système peut rencontrer des problèmes de mémoire insuffisante empêchant votre Job de s'exécuter correctement, et plus particulièrement lorsque vous utilisez un composant tMap pour effectuer des transformations.

Une option (uniquement disponible en Java pour le moment) a été ajoutée au composant tMap, pour utiliser moins de mémoire lors du traitement des données de référence (lookup). En effet, au lieu de stocker les données de référence dans la mémoire système et ainsi en atteindre les limites, l'option Store temp data vous permet de stocker les données de référence dans un dossier temporaire sur votre disque dur.

Cette option peut être sélectionnée dans la table Lookup des données d'entrée dans le Map Editor.

Pour activer l'option Store temp data, suivez les étapes suivantes :

  1. Double-cliquez sur le composant tMap de votre Job pour lancer le [Map Editor].
  2. Dans la zone d'entrée, cliquez sur la table Lookup affichant les données temporaires que vous souhaitez charger dans le disque pour ne pas encombrer la mémoire.
  3. Cliquez sur le bouton tMap settings pour afficher le tableau des propriétés.
  4. Cliquez sur le champ Value correspondant à l'option Store temp data, et cliquez sur le bouton [...] pour ouvrir la boîte de dialogue [Options].
  5. Dans la boîte de dialogue Options, double-cliquez sur true, ou sélectionnez-le et cliquez sur OK pour activer l'option et fermer la boîte de dialogue.

Pour que cette option soit totalement active, vous devez définir le répertoire de votre disque dans lequel les données seront stockées, et la taille du buffer, à savoir le nombre de lignes de données stockées dans chaque fichier temporaire. Vous pouvez spécifier le répertoire de stockage temporaire des données et la taille de la mémoire tampon (buffer) à la fois à partir du Map Editor et de la vue Component du tMap.

Pour paramétrer le répertoire de stockage temporaire et la taille du buffer à partir du Map Editor :

  1. Cliquez sur le bouton Property Settings en haut de la zone Input pour ouvrir la boîte de dialogue Property Settings.
  2. Dans la boîte de dialogue Property Settings, renseignez le chemin d'accès complet vers le dossier dans lequel les données temporaire seront stockées dans le champ Temp data directory path.
  3. Dans le champ Max buffer size (nb of rows), spécifiez le nombre maximum de lignes contenues dans chaque fichier temporaire. La valeur par défaut est de 2 000 000 lignes.
  4. Cliquez sur OK pour valider les paramètres et fermer la boîte de dialogue Property Settings.

Pour paramétrer le répertoire de stockage temporaire du composant tMap sans avoir à ouvrir le Map Editor :

  1. Cliquez sur le composant tMap dans l'espace de modélisation graphique pour le sélectionner, puis sélectionnez l'onglet Component pour afficher la vue Basic settings.
  2. Dans la zone Store on disk, renseignez le chemin d'accès complet vers le dossier dans lequel les données temporaires seront stockées dans le champ Temp data directory path.

    Vous pouvez aussi utiliser une variable de contexte à l'aide du raccourci Ctrl+Espace si vous avez configuré une variable dans un groupe de contexte dans le Repository. Pour plus d'informations concernant les contextes, consultez Utiliser les contextes et les variables.

À la fin de votre sous-Job, les fichiers temporaires seront nettoyés.

Ainsi, vous limitez l'utilisation de mémoire allouée aux données de référence à écrire dans les fichiers temporaires stockés sur le disque.

Remarque : Étant donné que l'écriture du flux principal sur le disque nécessite le stockage de données, l'ordre des lignes en sortie peut ne pas être respecté.

Dans la vue Advanced settings, vous pouvez aussi ajouter un buffer, au besoin. Pour cela, renseignez le champ Max. buffer size (Nb of rows) afin de séparer les données stockées sur le disque en autant de fichiers que nécessaire.