3
votes

Comment puis-je utiliser une bibliothèque Python externe dans AWS Glue?

Première question de débordement de pile ici. J'espère que je fais cela correctement:

J'ai besoin d'utiliser une bibliothèque Python externe dans AWS glue. "Openpyxl" est le nom de la bibliothèque.

Je suis ces instructions: https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html

Cependant, après avoir enregistré mon fichier zip à l'emplacement s3 correct et pointer mon travail de collage vers cet emplacement, je ne sais pas quoi écrire dans le script.

J'ai essayé votre Import openpyxl typique, mais cela renvoie simplement l'erreur suivante:

ImportError: No module named openpyxl

De toute évidence, je ne sais pas quoi faire ici - également relativement nouveau dans la programmation, donc je ne sais pas si c'est une question noob ou quoi. Merci d'avance!


1 commentaires

Est-ce un travail d'étincelle ou un travail de shell python?


3 Réponses :


6
votes

Cela dépend si le travail est Spark ou Python Shell. Pour Spark, il vous suffit de compresser la bibliothèque, puis lorsque vous pointez le travail vers le chemin S3 de la bibliothèque, le travail l'importera. Vous devez juste vous assurer que le zip contient ce fichier: __init__.py

Par exemple, pour la bibliothèque que vous essayez d'importer, si vous la téléchargez depuis https://pypi.org/project/openpyxl/#files , vous pouvez compresser le dossier openpyxl dans le fichier openpyxl-3.0.0.tar.gz , et stockez-le dans S3.


D'un autre côté, s'il s'agit d'un travail Python Shell, un fichier zip ne fonctionnera pas. Vous devrez créer un fichier oeuf à partir de la bibliothèque. Si vous utilisez cette version openpyxl-3.0.0, vous pouvez la télécharger à partir de ce même site Web, tout extraire et exécuter la commande python setup.py bdist_egg ou python3 au lieu de python si vous utilisez python3 à la place.

Cela générera un fichier egg dans le dossier dist qui est également généré. Il vous suffit de mettre ce fichier egg dans S3 et de pointer les bibliothèques Python Glue Job vers ce chemin.

Si vous avez déjà la bibliothèque et pour une raison quelconque vous n'avez pas le setup.py , vous devez la créer afin d'exécuter la commande pour générer le fichier egg. Veuillez vous référer à http://www.blog.pythonlibrary.org/2012/07/12/python-101-easy_install-or-how-to-create-eggs/ . Vous pouvez y trouver un exemple.


1 commentaires

Pour le shell python, il n'est pas nécessaire de télécharger et de regrouper dans un fichier egg. Vous pouvez utiliser install_requires=['openpyxl==3.0.0'] dans setup.py et il se téléchargera et s'installera en colle pendant l'exécution.



-1
votes

Vous pouvez utiliser le code standard suivant pour utiliser des fichiers supplémentaires ainsi que des bibliothèques externes - https://github.com/fatangare/aws-python-shell-deploy


0 commentaires

1
votes

Vous pouvez maintenant (à partir de la version 2 de Glue) ajouter directement des bibliothèques externes à l'aide du --additional-python-modules .

Par exemple, pour mettre à jour ou pour ajouter un nouveau module scikit-learn, utilisez la clé / valeur suivante:

"--additional-python-modules", "scikit-learn==0.21.3" .

Plus de détails peuvent être trouvés dans la documentation .


0 commentaires