【发布时间】: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