AWS Glue:将其他 Python 模块传递给作业 - ModuleNotFoundError

问题描述 投票:0回答:1

我正在尝试运行 Glue 作业(版本 4)来执行简单的数据批处理。我正在使用 Glue 环境未提供的其他 python 库 - translatelangdetect。此外,无论 Glue env 提供了“nltk”包,当我尝试导入它时,我不断收到找不到依赖项的错误(例如 regex._regex、_sqlite3)。

我尝试了一些解决方案来实现我的目标:

  1. 使用
    --extra-py-files
    ,我指定了我上传的 s3 存储桶的路径:
  • .zip
    由translate 和langdetect python 包组成的文件
  • 只是已解压包的目录
  • .whl
    格式打包自身(及其依赖项)
  1. 使用
    --additional-python-modules
    ,我指定了我上传的 s3 存储桶的路径:
  • .whl
    格式打包自身(及其依赖项)
  • 或者只是通过
    pip3
  • 确定哪个包必须安装在glue env中
  1. 使用 Docker

此外,我遵循了一些有用的来源来克服 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 管理胶水资源。

我做错了什么?

python pyspark aws-glue modulenotfounderror
1个回答
0
投票

我在 AWS Glue 4.0 中实现这一目标的方法是采取以下步骤: 在“作业详细信息”选项卡下,向下滚动到“高级属性”并展开该部分。找到作业参数区域并添加新参数。对于密钥,请输入以下文本: --附加Python模块 对于值,请输入 pyp.org 中找到的包名称。例子: PyMySQL==1.0.3,SQLAlchemy==2.0.19 或者在你的情况下: langDetect==1.0.9,翻译==3.6.1

对于每个包,使用逗号分隔它们。这个过程比压缩包并上传到 s3 容易得多。

© www.soinside.com 2019 - 2024. All rights reserved.