J'essaie de lire un fichier de 1,5 Go de s3 en utilisant des pandas & boto3 Aujourd'hui, j'ai dû faire pivoter un fichier de 36 Go de profondeur dans un fichier large (1,5 Go). J'ai écrit le fichier de 1,5 Go en local et vérifié si tout allait bien en utilisant pandas.read_csv(). Il a lu sans aucun problème. Mais après avoir copié en s3 lors de la lecture en utilisant boto3, les erreurs de code sont dues à une erreur de mémoire étrange. Le code fonctionne généralement bien pour les tailles de fichiers de 300 à 1 Go.erreur de mémoire lors de la lecture du fichier csv à partir de s3 en utilisant pandas & boto3. Erreur dans `python ': free(): pointeur invalide:
Je ne suis pas actuellement en mesure de déterminer exactement d'où provient l'erreur. J'ai essayé de copier à nouveau le fichier à s3 & toujours obtenir la même erreur de mémoire lors de la lecture.
Codepour lire s3:
input_file_obj= s3.get_object(Bucket=bucket, Key=file)
input_file_content= input_file_obj["Body"].read()
df=pd.read_csv(io.BytesIO(input_file_content), index_col=None, delimiter=delim,header=hdr,low_memory=False)
Je pense le bélier ne pouvait pas être la question, car il dispose de 32 Go de RAM disponible dans la machine EC2 que j'utilise. La machine sur laquelle je travaille est également Unix.
erreur Exemple:
*** Error in `python': free(): invalid pointer: 0x00007fd70340c3e4 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7c503)[0x7fd71d737503]
/home/user/anaconda3/lib/python3.6/site-packages/pandas/_libs/parsers.cpython-36m-x86_64-linux-gnu.so(parser_cleanup+0x1a)[0x7fd70340467a]
link pour terminer le journal des erreurs
Avez-vous la même erreur si dans 'read_csv' vous définissez' engine = 'python'' ou 'low_memory = True'? Un peu [googling] (https://github.com/tensorflow/tensorflow/issues/9328#issuecomment-296998879) suggère que cela peut avoir à faire avec des incompatibilités C, votre image EC2 peut avoir besoin d'une sorte de mise à jour si vous le souhaitez travailler tel quel. –
@andrew_reece J'ai fatigué en donnant 'low_memory = False' et ça a marché comme un charme. J'ai référé la documentation de Google et de pandas mais cela ne m'a pas apporté beaucoup de lumière sur ce paramètre. Test actuellement tous les modules qui utilisent cette fonction pour voir si elle a un effet secondaire. Pourriez-vous expliquer la signification de ce paramètre en détail si vous êtes au courant? – stormfield
La différence entre read from local et s3 était aussi la valeur de ce paramètre. C'est pourquoi je l'ai testé intially après l'avoir signalé. – stormfield