如何在EMR中安装指定GitHub分支的Python包?可否使用install_pypi_package方法?
EMR Spark安装GitHub分支依赖包相关问题解答
是否可以通过install_pypi_package方法实现
默认的install_pypi_package仅支持从配置的PyPI源拉取已正式发布的包版本,不支持直接指定GitHub仓库和分支安装。如果一定要使用该方法安装目标包,需要先将对应GitHub分支的代码打包上传到你自行托管的私有PyPI源,之后就可以通过install_pypi_package指定私有源完成安装。
具体安装方案
- 方案1:私有源适配install_pypi_package安装
- 本地拉取GitHub对应分支的代码,执行
python setup.py sdist构建源码安装包 - 将构建生成的.tar.gz格式包上传到你的私有PyPI源
- 在EMR Spark环境执行
install_pypi_package("你的包名", "自定义版本号", source="你的私有PyPI源地址")即可完成安装
- 本地拉取GitHub对应分支的代码,执行
- 方案2:直接使用pip命令安装
- 若仅需在当前Notebook会话使用依赖,可直接在Notebook cell中执行
!pip install git+https://github.com/仓库所有者/仓库名@目标分支名#egg=包名 - 若需要集群所有节点都安装该依赖,可配置EMR引导操作(Bootstrap Action),在节点启动时自动执行上述pip安装命令;也可以将打包好的依赖环境通过yarn
--archives参数分发到所有执行节点
- 若仅需在当前Notebook会话使用依赖,可直接在Notebook cell中执行
- 方案3:手动上传包后加载使用
- 本地将GitHub对应分支代码打包为wheel包或源码包,上传到EMR集群可访问的HDFS或S3路径
- 提交Spark作业时添加
--py-files 包的存储路径参数,或者在Notebook中执行sc.addPyFile("包的存储路径")即可加载使用
内容的提问来源于stack exchange,提问作者Tyler Norlund
相关产品推荐
相关产品推荐

