Importer un gros fichier

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Aurélien Madouasse
Messages : 352
Enregistré le : 26 Fév 2007, 11:23

Importer un gros fichier

Messagepar Aurélien Madouasse » 01 Mar 2007, 10:19

Bonjour,

Je voudrais importer une grosse quantité de données dans R (10 millions de lignes * 15 colonnes).

J'ai cru comprendre que le facteur limitant est la RAM et que R s'octroie automatiquement un certain pourcentage de la RAM du PC. Pour le momet j'ai 2 Go de RAM et j'aimerais passer à 4. Je ne sais pas si cela va suffir.

- Je voudrais savoir si il y a un moyen de calculer la quantité de RAM nécessaire pour une certaine quantité de données.

- R utilise-t-il une quantité de RAM optimale ou y a-t-il un moyen de le forcer à en utiliser plus sans faire planter Windows? J'ai pour le moment utilisé la fonction --max-mem-size= mais je ne suis pas sur que ça ait changé grand chose étant donné que je ne maitrise pas la quantité à entrer (j'ai mis 2.10^9).

Merci

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 01 Mar 2007, 10:34

Pourquoi ne pas diviser le tableau afin de simplifier l'importation plutôt que de faire ramer le pc pour pas grand chose finalement. Ensuite il suffit de recoller les tableaux avec la fonction rbind()

Aurélien Madouasse
Messages : 352
Enregistré le : 26 Fév 2007, 11:23

Messagepar Aurélien Madouasse » 01 Mar 2007, 13:21

Le problème risque d'etre le meme, au final il me faudra charger toutes les données em mémoire.

Logez Maxime
Messages : 3154
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 01 Mar 2007, 14:15

Bonjour,


Effectivement le problème sera le même. Je te conseille de regarder du côté de memory.limit() pour voir la mémoire maximale que tu peux allouer à R, car apriori de mettre des quantités de barrette de ram ne sert a rien R n'exploitant au maximum que 2 ou 3Go ... Voir dans les FAQ's de R. Sinon tu peux jouer sur la quantité maximale de mémoire quand tu te crées un raccourci du genre : "C:\Program Files\R\R-2.4.1\bin\Rgui.exe" --max-mem-size=1572864000 pour allouer: 1572864000/1024^2 = 1500Mo de ram a R. Je te conseille aussi d'incorporer tes données dans R avec la fonction scan() plutôt que read.table(), à priori elle prend moins de temps que read.table, ce qui est d'autant plus appréciable que le jeu de données est volumineux.

Maxime

Aurélien Madouasse
Messages : 352
Enregistré le : 26 Fév 2007, 11:23

Messagepar Aurélien Madouasse » 01 Mar 2007, 16:38

Merci pour toutes ces infos.

Je suis un peu frustré d'avoir cette quantité immense d'informations et de ne pas pouvoir tout utiliser. Quelles sont les alternatives possibles?

Est ce que je gagnerais beaucoup en utilisant Linux?

Y a-t-il des logiciels qui pourraient prendre en charge mes données ou la RAM sera-t-elle le facteur limitant quoique je fasse?

Logez Maxime
Messages : 3154
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 01 Mar 2007, 16:55

Re,


A vrai dire je ne sais pas trop, j'ai essayé de créer un tableau de 10 000 000 de lignes et 15 colonnes mais il n'a pas voulu sachant que j'avais fixé la limite à 1500Mb et que je ne peux pas augmenter cette limite. Peut être que sur un pc avec plus de ram (2go sur le mien) ça peut passer. Mais peut êter qu'après tu te conforteras a des problêmes de mémoire lorsque tu voudras faire des opérations sur ce tableau. Désole de ne pas pouvoir t'apporter des solutions.

Maxime

Aurélien Madouasse
Messages : 352
Enregistré le : 26 Fév 2007, 11:23

Messagepar Aurélien Madouasse » 01 Mar 2007, 17:35

OK - merci pour ton aide

Pour le moment, j'ai l'impression que personne n'a la moindre idée de comment s'y prendre. Je suis surpris que personne n'ait d'expérience avec des fichiers de taille similaire voir plus gros.

Aurélien

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 01 Mar 2007, 18:40

Aurélien Madouasse a écrit :OK - merci pour ton aide

Pour le moment, j'ai l'impression que personne n'a la moindre idée de comment s'y prendre. Je suis surpris que personne n'ait d'expérience avec des fichiers de taille similaire voir plus gros.

Aurélien


Cela dépend de ce que vous voulez faire avec ces données et de la forme sous laquelle elles se trouvent. S'il s'agit d'extraire des sous-ensembles de taille plus modeste à partir d'une base Oracle, MySQL MS Access etc., avant de faire les calculs, il devrait être facile d'importer directement ces sous-ensembles plutôt que la base dans sa totalité. Cela peut se faire par exemple avec des packages offrant une interface SQL, comme RODBC. Il y en a d'autres. Voir le manuel Data Import/Export livré avec R.

Voir le script est les données disponibles à http://forums.cirad.fr/logiciel-R/viewtopic.php?t=242 pour des exemples d'extraction à partir d'une base Access (de taille très modeste !).

Renaud


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité