AWS Glue Python-Shell:如何提供自己的库?

Posted

技术标签:

【中文标题】AWS Glue Python-Shell:如何提供自己的库?【英文标题】:AWS Glue Python-Shell : How to provide your own library? 【发布时间】:2019-08-14 20:09:28 【问题描述】:

我想让 aws glue python-shell 作业连接到 MS SQL Server。我知道我应该使用 pymssql 库。在我的计算机上,我的脚本可以运行,但使用 AWS,我知道我需要将 pymssql 库上传到 S3 并引用它。

如果我想连接到 redshift,我正在关注 their example 如何提供您自己的 egg 文件,但在创建 egg 文件并运行脚本后我收到此错误

Couldn't find index page for 'redshift-module' (maybe misspelled?)

谁能帮助提供我如何完成提供自己的库?在 redshift 或 ms sql 中。只是寻找一个我可以适应和工作的例子。

完整的作业日志

Creating /glue/lib/installation/site.py
Processing redshift_module-0.1-py3.7.egg
Copying redshift_module-0.1-py3.7.egg to /glue/lib/installation
Adding redshift-module 0.1 to easy-install.pth file

Installed /glue/lib/installation/redshift_module-0.1-py3.7.egg
Processing dependencies for redshift-module==0.1
Searching for redshift-module==0.1
Reading https://pypi.org/simple/redshift-module/
Scanning index of all packages (this may take a while)
Reading https://pypi.org/simple/

完整的错误输出

Couldn't find index page for 'redshift-module' (maybe misspelled?)
No local packages or working download links found for redshift-module==0.1
error: Could not find suitable distribution for Requirement.parse('redshift-module==0.1')

【问题讨论】:

你能试试这个***.com/questions/46329561/aws-glue-python/…,让我知道它是否适合你吗? 这就是我正在做的。尽管那篇文章是关于 Glue (Apache Spark),但我正在使用 Python-Shell,它们都要求您在作业配置中拥有 S3 中的第三方库。在日志中,我看到它找到了我的 .egg 文件,但没有找到我的库。 【参考方案1】:

答案提到here

简而言之,AWS Glue uses Python 3.6 而鸡蛋“redshift_module-0.1-py3.7.egg”是使用 python 3.7 构建的

您可能还需要查看documentation,它有一些有用的打包选项,例如install_requires=['package']

【讨论】:

【参考方案2】:

我在胶水作业中执行基本测试时遇到了同样的问题,在进一步调查该场景时,我注意到 Glue Python shell 3 仅使用 Python 3.6。注意:使用不同版本的 python 创建的 egg 文件不会相互支持,正如我在这个问题中观察到的那样。

要省略这一点,您需要制作与任何版本兼容的 Wheel 文件。

    在 setup.py 文件所在的目录中运行以下命令:

    $ python3 setup.py bdist_wheel

    上传wheel文件到S3桶

    转到 AWS 粘合作业控制台并创建新作业,提供所有必需的参数并将类型更改为“Python Shell”并在“Python 库路径”中提供您的 s3 路径(其中存在 wheel 文件)

【讨论】:

以上是关于AWS Glue Python-Shell:如何提供自己的库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS-Glue 脚本中编写用户定义的函数?

AWS Python Shell - 如何使用 Glue 目录连接

如何在 AWS 中使用 Glue 作业覆盖 s3 数据

如何在 ETL 处理之前检查 AWS Glue 架构?

如何仅为 AWS Glue 脚本启用粘合日志记录

AWS Glue CDK - 创建作业类型 Spark (Glue 2.0)