web-dev-qa-db-fra.com

Utilisez AWS Glue Python avec NumPy et Pandas Python Packages)

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.

11
jumpman23

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. .

11
Jasper_Li

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>
4
bdcloud

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

2
letstry

À 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.

1
BigData-Guru

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.

1
MadCityDev

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.

0
Vin Odh

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

Installer à l'aide d'AWS Lambda Layer

https://aws-data-wrangler.readthedocs.io/en/latest/install.html#setting-up-lambda-layer

Exemple: typique Pandas ETL

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"],
)
0
Jingkun

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)
0
Sergey Nasonov