跳至內容

我該如何解決執行 Sparkmagic 核心的 SageMaker 筆記本上的「ModuleNotFoundError」錯誤?

1 分的閱讀內容
0

我想使用 Sparkmagic (PySpark) 核心來執行 Amazon SageMaker 筆記本執行個體。我使用 pip 來安裝 Python 程式庫,但我收到下列錯誤訊息: 「ModuleNotFoundError: 沒有名為 my_module_name 的模組。」

簡短描述

當您使用 Sparkmagic 核心時,SageMaker 筆記本會作為 Apache Spark 工作階段的介面。Apache Spark 工作階段會在遠端 Amazon EMR 叢集或 AWS Glue 開發端點上執行。當您使用 pip 在筆記本執行個體上安裝 Python 程式庫時,該程式庫僅適用於本機筆記本執行個體。如要解決 ModuleNotFoundError,請在 AWS Glue 開發端點或 EMR 叢集的每個節點上安裝程式庫。

注意:如果使用程式庫的程式碼不需要大量運算,請使用本機模式 (%%local)。本機模式只會在本機筆記本執行個體上執行儲存格。當您使用本機模式時,您不需要在遠端叢集或開發端點上安裝程式庫。

解決方法

在 AWS Glue 開發端點上安裝程式庫

若要在 AWS Glue 開發端點上安裝程式庫,請參閱在開發端點中載入 Python 程式庫

在 Amazon EMR 叢集上安裝程式庫

**注意:**在下列命令中,將 Example-library 替換為您要使用的程式庫。

若要在遠端 Amazon EMR 叢集上安裝程式庫,請在建立叢集時使用引導操作。如果您將 Amazon EMR 叢集連線至 SageMaker 筆記本執行個體,請手動將程式庫安裝到所有叢集節點。

請完成下列步驟:

  1. 使用 SSH 連線至主節點

  2. 安裝程式庫:

    sudo python -m pip install pandas
  3. 確認模組已成功安裝:

    python -c "import Example-library as pd; print(pd.__version__)"
  4. 開啟 Amazon SageMaker 筆記本執行個體,然後重新啟動核心。

  5. 若要確認程式庫是否正常運作,請執行需要該程式庫的命令,例如下命令:

    pdf = spark.sql("show databases").toExample-library()
  6. 使用 SSH 連線至其他叢集節點,然後將程式庫安裝到每個節點。

使用本機模式

如果您不需要在遠端叢集或開發端點上執行程式碼,請使用本機筆記本執行個體。例如,不要在 Spark 叢集的每個節點上安裝 matplotlib。而是使用本機模式 (%%local) 在本機筆記本執行個體上執行儲存格。

**注意:**在下列命令中,將範例變數替換為您的變數。

若要將結果匯出到本機變數,並以本機模式執行程式碼,請完成下列步驟:

  1. 將結果匯出到本機變數:

    %%sql -o query1SELECT 1, 2, 3
  2. 在本機執行程式碼:

    %%localprint(len(query1))

若要在 Spark 管道中使用 SageMakerEstimator,請執行本機 Spark 工作階段來修改資料。然後,使用 SageMaker Spark 程式庫進行訓練和預測。如需詳細資訊,請參閱 AWS 實驗室 GitHub 儲存庫上的 sagemaker-spark

若要查看範例筆記本,請參閱 AWS 實驗室 GitHub 儲存庫上的 pyspark_mnist_kmeans。此範例筆記本使用的是 conda_python3 核心,該核心並未由 EMR 叢集支援。對於工作負載較大的作業,請建立遠端 Spark 叢集,然後將其連線至筆記本執行個體。

相關資訊

將 Apache Spark 與 Amazon SageMaker 搭配使用

在 Amazon EMR 中建立由 Spark 支援的 Amazon SageMaker 筆記本