Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用笔记本范围的库

如果集群上随 EMR 笔记本 提供的默认库不足以满足您的应用程序,则对于 Amazon EMR 5.26.0 及更高版本,您可以在笔记本编辑器中从公有或私有 Python 程序包索引 (PyPI) 存储库安装笔记本范围 的 Python 库。笔记本范围的库是在适用于当前笔记本会话的虚拟 Python 环境中安装的。它们仅在笔记本会话期间可用。在会话结束后,将删除这些库。后续会话无法使用这些库。要使库可用于多个 EMR 笔记本会话,您可以通过引导操作或 EMR 的自定义 Amazon Linux AMI 将它们安装在集群实例上。有关更多信息,请参阅 创建引导操作以安装其他软件使用自定义 AMI

笔记本范围的库提供以下优势:

  • 您可以在 EMR 笔记本中使用库,而无需重新创建集群或者重新将笔记本附加到集群。

  • 您可以将 EMR 笔记本的库依赖关系隔离到单个笔记本会话。从笔记本中安装的库不会干扰集群上的其他库或其他笔记本会话中安装的库。

注意事项和限制

使用笔记本范围的库时,请注意以下几点:

  • 您只能卸载使用 install_pypi_package API 安装的库。您无法卸载在集群上安装的任何库。

  • 如果不同版本的相同库分别安装在了集群上和用作笔记本范围的库,则笔记本范围的库版本将覆盖集群库版本。

使用笔记本范围的库

要安装库,您的 Amazon EMR 集群必须能够访问库所在的 PyPI 存储库。例如,对于私有子网中的集群,您可能需要配置网络地址转换 (NAT) 并为集群提供路径来访问位于集群 VPC 外部的存储库。有关为不同网络配置来配置外部访问的更多信息,请参阅 Amazon VPC 用户指南 中的场景和示例

默认情况下,使用 Python 2 创建环境。要使用 Python 3,您可以通过在笔记本单元中运行以下命令来设置 PySpark 属性,从而重新配置笔记本会话。

%%configure -f { "conf":{ "spark.pyspark.python": "python3", "spark.pyspark.virtualenv.enabled": "true", "spark.pyspark.virtualenv.type":"native", "spark.pyspark.virtualenv.bin.path":"/usr/bin/virtualenv" }}

以下示例演示了一些命令,这些命令使用 PySpark API 从笔记本单元中列出、安装和卸载库。

例 – 列出当前库

以下命令列出了可用于当前 Spark 笔记本会话的 Python 包。这将列出集群上安装的库以及笔记本范围的库。

sc.list_packages()

例 – 安装 Celery 库

以下命令安装 Celery 库作为笔记本范围的库。

sc.install_pypi_package("celery")

安装库后,以下命令将确认该库在 Spark 驱动程序和执行程序上是否可用。

import celery sc.range(1,10000,1,100).map(lambda x: celery.__version__).collect()

例 – 安装 Arrow 库,指定版本和存储库

以下命令安装 Arrow 库作为笔记本范围的库,并指定库版本和存储库 URL。

sc.install_pypi_package("arrow==0.14.0", "https://pypi.org/simple")

例 – 卸载库

以下命令卸载 Arrow 库,将其作为笔记本范围的库从当前会话中删除。

sc.uninstall_package("arrow")