AWS Glue Python

jum*_*n23 11 python amazon-web-services pandas aws-lambda aws-glue

在AWS上新的ETL工具中使用诸如numpy和pandas之类的软件包的最简单方法是什么?我在Python中有一个完整的脚本我想在AWS Glue中运行,它使用numpy和pandas.

Koo*_*Koo 13

您可以检查使用此脚本作为粘合作业安装的最新 python 包

import logging
import pip
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

if __name__ == '__main__':
    logger.info(pip._internal.main(['list']))
Run Code Online (Sandbox Code Playgroud)

30-Jun-2020Glue 开始,这些 python 包已经预先安装好了。所以numpypandas被覆盖。

awscli 1.16.242
boto3 1.9.203
botocore 1.12.232
certifi 2020.4.5.1
chardet 3.0.4
colorama 0.3.9
docutils 0.15.2
idna 2.8
jmespath 0.9.4
numpy 1.16.2
pandas 0.24.2
pip 20.0.2
pyasn1 0.4.8
PyGreSQL 5.0.6
python-dateutil 2.8.1
pytz 2019.3
PyYAML 5.2
requests 2.22.0
rsa 3.4.2
s3transfer 0.2.1
scikit-learn 0.20.3
scipy 1.2.1
setuptools 45.1.0
six 1.14.0
urllib3 1.25.8
virtualenv 16.7.9
wheel 0.34.2

Run Code Online (Sandbox Code Playgroud)

如果requirements.txt用于构建附加.whl. 在whl启动脚本之前收集并安装该文件。我还建议您研究 Sagemaker Processing,这对于基于 Python 的工作来说更容易。与用于glue-python shell 的无服务器实例不同,您不限于那里的16gb 限制。


小智 11

我认为目前的答案是你做不到的.根据AWS Glue文档:

只能使用纯Python库.尚不支持依赖C扩展的库,例如pandas Python数据分析库.

但即使我尝试在S3中包含一个普通的python编写的库,由于某些HDFS权限问题,Glue作业也失败了.如果您找到解决方法,请告诉我.

  • **已过时** Glue v 2.0 有一组内置库,包括编译的扩展,包括“pandas” (2认同)

Pra*_*ddy 11

如果您没有纯 python 库但仍想使用,那么您可以使用以下脚本在您的 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>
Run Code Online (Sandbox Code Playgroud)

  • 您使用的是 Glue pyspark 作业还是 python shell 作业?它仅适用于 python shell 作业,并且 GLUE_INSTALLATION 值将从 os 环境变量中读取。 (2认同)

小智 6

有一个更新:

...您现在可以使用 Python shell 作业... ...AWS Glue 支持脚本中的 Python shell 作业与 Python 2.7 兼容并预加载了 Boto3、NumPy、SciPy、pandas 等库.

https://aws.amazon.com/about-aws/whats-new/2019/01/introducing-python-shell-jobs-in-aws-glue/