Quelle est la façon la plus simple d'utiliser des packages tels que NumPy et Pandas dans le nouvel outil ETL sur AWS appelé Glue? J'ai un script terminé dans Python je le ferais) vous souhaitez exécuter dans AWS Glue qui utilise NumPy et Pandas.
Je pense que la réponse actuelle est que vous ne pouvez pas . Selon AWS Glue Documentation :
Seules les bibliothèques pures Python peuvent être utilisées. Les bibliothèques qui reposent sur des extensions C, telles que la pandas Python bibliothèque d'analyse de données) , ne sont pas encore pris en charge.
Mais même lorsque j'essaie d'inclure une bibliothèque écrite normale python dans S3, le travail Glue a échoué en raison d'un problème d'autorisation HDFS. Si vous trouvez un moyen de résoudre ce problème, faites-le moi savoir également. .
Si vous n'avez pas de bibliothèques python pures et que vous souhaitez toujours les utiliser, vous pouvez utiliser le script ci-dessous pour l'utiliser dans votre code Glue:
import os
import site
from setuptools.command import easy_install
install_path = os.environ['GLUE_INSTALLATION']
easy_install.main( ["--install-dir", install_path, "<library-name>"] )
reload(site)
import <installed library>
lorsque vous cliquez sur exécuter le travail, vous disposez d'un bouton Paramètres du travail (facultatif) qui est réduit par défaut, lorsque nous cliquez dessus, nous avons les options suivantes que nous pouvons utiliser pour enregistrer les bibliothèques en s3 et cela fonctionne pour moi:
Chemin de la bibliothèque Python
s3: // nom du compartiment/nom du dossier/nom du fichier
Chemin des pots dépendants
s3: // nom du compartiment/nom du dossier/nom du fichier
Chemin des fichiers référencés s3: // nom-bucket/nom-dossier/nom-fichier
À partir de maintenant, vous pouvez utiliser Python modules d'extension et bibliothèques avec vos scripts ETL AWS Glue tant qu'ils sont écrits en Python pur. Bibliothèques C telles que pandas = ne sont pas pris en charge à l'heure actuelle, et les extensions ne sont pas écrites dans d'autres langues.
Il y a une mise à jour:
... Vous pouvez maintenant utiliser Python travaux Shell ... ... travaux Python Shell dans les scripts de support AWS Glue qui sont compatibles avec Python 2.7 et venir préchargé avec des bibliothèques telles que Boto3, NumPy, SciPy, pandas et autres.
https://aws.Amazon.com/about-aws/whats-new/2019/01/introducing-python-Shell-jobs-in-aws-glue/
Si vous allez modifier un travail (ou lorsque vous en créez un nouveau), il y a une section facultative qui est réduite appelée "Bibliothèques de scripts et paramètres de travail (facultatif)". Ici, vous pouvez spécifier un compartiment S3 pour les bibliothèques Python (ainsi que d'autres choses). Je ne l'ai pas encore essayé moi-même pour cette partie, mais je pense que c'est ce que vous cherchez pour.
Si vous souhaitez intégrer des modules python dans votre travail AWS GLUE ETL, vous pouvez le faire. Vous pouvez utiliser le module Python que vous voulez. Parce que Glue n'est rien d'autre que sans serveur avec Python. SO tout ce dont vous avez besoin est de conditionner les modules dont votre scrpt a besoin en utilisant pip install -t /path/to/your/dircetory
. Ensuite, téléchargez vers votre compartiment s3. Et lors de la création du travail AWS Glue, après avoir pointé les scripts s3, l'emplacement temporaire, si vous passez à l'option de paramètres de travail avancés, vous y verrez l'option python_libraries. entrez la description de l'image ici Vous pouvez simplement pointer cela vers python packages de module que vous avez téléchargés sur s3.
La réponse choisie n'est plus vraie depuis 2019
awswrangler
est ce dont vous avez besoin. Il vous permet d'utiliser pandas en colle et lambda
https://github.com/awslabs/aws-data-wrangler
https://aws-data-wrangler.readthedocs.io/en/latest/install.html#setting-up-lambda-layer
import pandas
import awswrangler as wr
df = pandas.read_... # Read from anywhere
# Typical Pandas, Numpy or Pyarrow transformation HERE!
wr.pandas.to_parquet( # Storing the data and metadata to Data Lake
dataframe=df,
database="database",
path="s3://...",
partition_cols=["col_name"],
)
Pour installer une version spécifique (par exemple, pour AWS Glue python), accédez au site Web avec python, par exemple vers la page du package "pg8000" https://pypi.org/project/pg8000/1.12.5/#files
Sélectionnez ensuite une version appropriée, copiez le lien vers le fichier et collez-le dans l'extrait de code ci-dessous:
import os
import site
from setuptools.command import easy_install
install_path = os.environ['GLUE_INSTALLATION']
easy_install.main( ["--install-dir", install_path, "https://files.pythonhosted.org/packages/83/03/10902758730d5cc705c0d1dd47072b6216edc652bc2e63a078b58c0b32e6/pg8000-1.12.5.tar.gz"] )
reload(site)