如何在AWS Glue中使用外部python库?

时间:2019-10-02 16:55:09

标签: python amazon-web-services openpyxl aws-glue

第一个堆栈溢出问题在这里。希望我正确地做到这一点:

我需要在AWS胶水中使用外部python库。 “ Openpyxl”是库的名称。

我遵循以下指示:https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html

但是,在将zip文件保存到正确的s3位置并将粘合作业指向该位置之后,我不确定该在脚本中实际写些什么。

我尝试了典型的Import openpyxl,但这只会返回以下错误:

ImportError: No module named openpyxl

很明显,我不知道该怎么做-对编程来说还是比较新的东西,所以我不确定这是一个菜鸟问题还是什么。预先感谢!

3 个答案:

答案 0 :(得分:1)

现在(从Glue版本2开始),您可以使用--additional-python-modules参数直接添加外部库。

例如,要更新或添加新的scikit-learn模块,请使用以下键/值:

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

更多详细信息可以在docs中找到。

答案 1 :(得分:0)

这取决于作业是Spark还是Python Shell。 对于Spark,您只需要压缩库,然后将作业指向库S3路径时,该作业将导入它。您只需要确保zip包含以下文件即可:__init__.py

例如,对于您要导入的库,如果您从https://pypi.org/project/openpyxl/#files下载库,则可以将 openpyxl 文件夹压缩到 openpyxl- 3.0.0.tar.gz ,并将其存储在S3中。


另一方面,如果它是Python Shell作业,则zip文件将不起作用。您将需要从库中创建一个文件。 如果您使用的是openpyxl-3.0.0版本,则可以从同一网站下载它,提取所有内容,然后运行命令python setup.py bdist_egg python3 而不是 python < / strong>(如果您改用python3)。

这将在dist文件夹内生成一个 egg 文件,该文件也将生成。您只需要将该鸡蛋文件放在S3中,然后将Glue Job Python库指向该路径即可。

如果您已经有了该库,并且由于某种原因而没有setup.py,则必须创建它才能运行命令来生成egg文件。请参阅http://www.blog.pythonlibrary.org/2012/07/12/python-101-easy_install-or-how-to-create-eggs/。在那里可以找到示例。

答案 2 :(得分:0)

您可以使用以下样板代码来使用其他文件和外部库-https://github.com/fatangare/aws-python-shell-deploy