【问题标题】:How to add external library in a glue job using python shell如何使用 python shell 在胶水作业中添加外部库
【发布时间】:2020-11-24 03:11:45
【问题描述】:

我尝试通过在 AWS 文档https://docs.aws.amazon.com/glue/latest/dg/add-job-python.html 中提到的作业配置中添加外部依赖项(如 pyathena、pytest 等 ..)作为 python egg 文件/whl 文件在 python-shell 中运行 Glue 作业。

Glue 作业是在没有 Internet 的 VPC 下配置的,其执行导致以下错误。

警告:目录 '/.cache/pip' 或其父目录不是 当前用户拥有或不可写。缓存已经 禁用。检查该目录的权限和所有者。如果 用 sudo 执行 pip,你可能需要 sudo 的 -H 标志。

警告:重试(重试(总计 = 4,连接 = 无,读取 = 无, redirect=None, status=None)) 连接中断后 'ConnectTimeoutError(, '与 pypi.org 的连接超时。 (连接 超时=15)')'

我什至尝试使用以下代码修改我的 python 脚本

import os
import site
import importlib
from setuptools.command import easy_install
install_path = os.environ['GLUE_INSTALLATION']

libraries = ["pyathena"]

for lib in libraries:
    easy_install.main( ["--install-dir", install_path , lib] )

importlib.reload(site)

在执行上述代码时,我遇到了以下错误

https://pypi.org/simple/pyathena/ 上的下载错误:[Errno 99] 不能 分配请求的地址——有些包可能找不到!不能 查找“pyathena”的索引页(可能拼写错误?)

我可以有示例代码 sn-p 来为外部 python 包生成一个 egg/whl 文件并添加 Glue python-shell 作业的那些部分

【问题讨论】:

  • 你可以试试这个步骤helicaltech.com/external-python-libraries-aws-glue-job 并确保你使用的 vpc 有一个 S3 端点
  • @PrabhakarReddy - 谢谢,上面链接中提到的步骤有助于解决问题
  • 我已经添加了答案。如果有帮助,请将其标记为已回答。

标签: aws-glue


【解决方案1】:

请参阅此doc,其中包含打包 python 库的详细步骤。还要确保您的 VPC 具有 s3 端点 enter link description here,因为当您在 VPC 中运行 Glue 作业时,流量不会离开 AWS 网络。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    相关资源
    最近更新 更多