Bonjour, j'essayais d'effectuer une pile de séries multiples pour un ensemble de données (3,5 millions de lignes et 225 colonnes). Cela provoquait un problème de dépassement de mémoire RAM (mémoire insuffisante). J'utilisais 32 Go de RAM. Existe-t-il un moyen de procéder en série pour éviter ce problème de mémoire et obtenir la table de données attendue ?
Une seule table de données avec 3,5 millions de lignes et 225 colonnes = 787,5 millions de lignes me coûte 12 + Go. La table empilée régulière aura 3,5 MX 225 = 787,5 M de lignes et deux colonnes (la seconde étant l'étiquette), qui seront facilement de l'ordre de 20 Go. Elles ne coexisteront donc pas sur 32 Go de RAM.
Je propose la séquence suivante :
- Prenez des données originales de 3,5 millions de lignes et de 225 colonnes, enregistrez des colonnes individuelles dans des fichiers séparés, une à la fois. Et fermez le nouveau fichier à chaque fois après l'avoir enregistré. Chaque fichier enregistré a deux colonnes, l'une est la série, l'autre est l'indicateur ou l'étiquette. Utilisez le type numérique pour l'étiquette. Dans votre cas, utilisez simplement 1 à 225. (Facultatif, essayez de compresser la colonne d'étiquette. Et la colonne de compression utilisera un champ de 2 octets.)
- Fermez le gros fichier d'origine.
- Ouvrez le premier fichier enregistré avec une colonne. Ensuite, concaténez d'autres fichiers individuels, un par un, avec "Ajouter à la première table" coché. Et fermez tous les fichiers individuels immédiatement après leur ajout.
J'ai essayé d'ajouter 3,5 millions de lignes et 2 colonnes à la grande table de 787,5 millions de lignes et 2 colonnes. La consommation de mémoire maximale par JMP a parfois dépassé 20 Go, mais a survécu et a été réduite à ~ 18 + Go après la concaténation. Et j'ai continué à ajouter pendant encore quelques tours, j'ai observé un comportement similaire. Et je vois une économie de mémoire plus importante si j'utilise des colonnes compressées. Quoi qu'il en soit, cela vaut la peine d'essayer. Bonne chance!
BTW, comment comptez-vous analyser les données ? Quelle plateforme souhaitez-vous utiliser ?