我正在尝试运行 Glue 作业(版本 4)来执行简单的数据批处理。我正在使用 Glue 环境未提供的其他 python 库 - translate 和 langdetect。此外,无论 Glue env 提供了“nltk”包,当我尝试导入它时,我不断收到找不到依赖项的错误(例如 regex._regex、_sqlite3)。
我尝试了一些解决方案来实现我的目标:
--extra-py-files
,我指定了我上传的 s3 存储桶的路径:.zip
由translate 和langdetect python 包组成的文件.whl
格式打包自身(及其依赖项)--additional-python-modules
,我指定了我上传的 s3 存储桶的路径:.whl
格式打包自身(及其依赖项)pip3
此外,我遵循了一些有用的来源来克服 ModuleNotFoundError 的问题:
a) https://aws.amazon.com/premiumsupport/knowledge-center/glue-import-error-no-module-named/。
b)https://aws.amazon.com/premiumsupport/knowledge-center/glue-version2-external-python-libraries/
c)https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html
另外,我尝试使用 Glue 版本 4 和 3,但没有运气。这似乎是一个错误。读取 s3 存储桶的所有权限均授予glue 角色。 Python 脚本版本与我尝试安装的库相同 - Python 3。为了给您更多线索,我通过 Terraform 管理胶水资源。
我做错了什么?
我在 AWS Glue 4.0 中实现这一目标的方法是采取以下步骤: 在“作业详细信息”选项卡下,向下滚动到“高级属性”并展开该部分。找到作业参数区域并添加新参数。对于密钥,请输入以下文本: --附加Python模块 对于值,请输入 pyp.org 中找到的包名称。例子: PyMySQL==1.0.3,SQLAlchemy==2.0.19 或者在你的情况下: langDetect==1.0.9,翻译==3.6.1
对于每个包,使用逗号分隔它们。这个过程比压缩包并上传到 s3 容易得多。