【问题标题】:Python packages not importing in AWS EMRPython 包未在 AWS EMR 中导入
【发布时间】:2020-04-02 03:47:27
【问题描述】:

我正在尝试通过 Livy 向 EMR 集群提交作业。我的 Python 脚本(提交作业)需要导入一些包。我已经在 EMR 的主节点上安装了所有这些包。主脚本位于 S3 上,该脚本正在调用该脚本以从 EC2 向 Livy 提交作业。每次我尝试在远程机器 (EC2) 上运行该作业时,它都会显示导入错误(没有名为 [mod name] 的模块)

我已经坚持了一个多星期,无法找到可能的解决方案。任何帮助将不胜感激。 谢谢。

【问题讨论】:

  • 执行器也需要这些库,因此所有这些都需要存在于所有核心节点上。一种干净的方法是使用引导脚本。网上有很多关于如何做到这一点的资源。另外,您可以在这里查看我的答案:stackoverflow.com/a/57408712/4245859

标签: python python-3.x amazon-emr livy


【解决方案1】:

您尝试导入的这些包。他们是定制包吗?如果是这样,你是如何包装它们的。您是否创建了一个 wheel 文件或 zip 文件并在您的 spark 提交中通过 livy 将它们指定为 --py-files ?

可能的问题。

您仅在主节点上安装了软件包。您将需要登录您的工作节点并在那里安装软件包。否则,当您配置 emr 时,请使用引导操作安装软件包

您应该可以通过 --py-files 选项添加库,但下载轮子文件并使用它们比自己压缩任何东西更安全。

【讨论】:

  • 不,它们是标准库,如 sqlalchemy 和 psycopg2。此外,我将它们压缩并在 Livy 提交中作为 pyfiles 参数传递。
  • 如果这是 emr,您最好通过引导操作安装它们,这样它是 1 次活动,因为库不会更改。如果它是一个自定义库,那么这就是你实际将它们作为 -py-files 传递的时候。无论哪种方式...如果您想这样做,请尝试下载这些库的 whl 文件,然后使用它们。请记住,当您在主模式下安装软件包时,它不会使它们在所有工作节点上都可用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 2021-07-11
相关资源
最近更新 更多