如何解决运行 Sparkmagic 内核的 SageMaker Notebook 上的“ModuleNotFoundError”错误?

2 分钟阅读
0

我想使用 Sparkmagic (PySpark) 内核来运行 Amazon SageMaker Notebook 实例。我使用 pip 安装了 Python 库,但我收到了以下错误: “ModuleNotFoundError: 没有名为 my_module_name 的模块。”

简短描述

当您使用 Sparkmagic 内核时,SageMaker Notebook 将充当 Apache Spark 会话的接口。Apache Spark 会话在远程 Amazon EMR 集群或 AWS Glue 开发端点上运行。当您使用 pip 在 Notebook 实例上安装 Python 库时,该库仅适用于本地 Notebook 实例。要解决 ModuleNotFoundError,请在 AWS Glue 开发端点或 EMR 集群的每个节点上安装该库。

注意:如果使用该库的代码不是计算密集型代码,请使用本地模式 (%%local)。本地模式仅在本地 Notebook 实例上运行单元。使用本地模式时,无需在远程集群或开发端点上安装该库。

解决方法

在 AWS Glue 开发端点上安装库

要在 AWS Glue 开发端点上安装库,请参阅在开发端点中加载 Python 库

在 Amazon EMR 集群上安装库

**注意:**在以下命令中,请将 Example-library 替换为要使用的库。

要在远程 Amazon EMR 集群上安装库,请在创建集群时使用引导操作。如果您已将 Amazon EMR 集群连接到 SageMaker Notebook 实例,请在所有集群节点上手动安装库。

完成以下步骤:

  1. 使用 SSH 连接到主节点

  2. 安装库:

    sudo python -m pip install pandas
  3. 确认模块已成功安装:

    python -c "import Example-library as pd; print(pd.__version__)"
  4. 打开 Amazon SageMaker Notebook 实例,然后重启内核。

  5. 要确认库是否正常运行,请运行需要使用该库的命令,例如以下命令:

    pdf = spark.sql("show databases").toExample-library()
  6. 使用 SSH 连接到其他集群节点,然后在每个节点上安装库。

使用本地模式

如果您不需要在远程集群或开发端点上运行代码,请使用本地 Notebook 实例。例如,不要在 Spark 集群的每个节点上安装 matplotlib。而是使用本地模式 (%%local) 在本地 Notebook 实例上运行单元。

**注意:**在以下命令中,请将示例变量替换为您的变量。

要将结果导出到本地变量并在本地模式下运行代码,请完成以下步骤:

  1. 将结果导出到本地变量:

    %%sql -o query1SELECT 1, 2, 3
  2. 在本地运行代码:

    %%localprint(len(query1))

要在 Spark 管道中使用 SageMakerEstimator,请运行本地 Spark 会话来修改数据。然后,使用 SageMaker Spark 库进行训练和做出预测。有关详细信息,请参阅 AWS Labs GitHub 存储库上的 sagemaker-spark

要查看示例 Notebook,请参阅 AWS Labs GitHub 存储库上的 pyspark_mnist_kmeans。示例 Notebook 使用的是不受 EMR 集群支持的 conda_python3 内核。对于工作负载繁重的作业,请创建一个远程 Spark 集群,并将该集群连接到 Notebook 实例。

相关信息

将 Apache Spark 与 Amazon SageMaker 结合使用

Build Amazon SageMaker notebooks backed by Spark in Amazon EMR