スキップしてコンテンツを表示

Sparkmagic カーネルを実行している SageMaker ノートブックで発生する「ModuleNotFoundError」というエラーを解決する方法を教えてください。

所要時間1分
0

Sparkmagic (PySpark) カーネルを使用して Amazon SageMaker ノートブックインスタンスを実行しようとしています。pip を使用して Python ライブラリをインストールしたところ、次のエラーが発生しました。 「ModuleNotFoundError: No module named 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))

SageMakerEstimator を Spark パイプラインで使用するには、ローカルの Spark セッションを実行してデータを変更します。次に、SageMaker Spark ライブラリを使用してトレーニングと予測を行います。詳細については、AWS Labs の GitHub リポジトリで「sagemaker-spark」を参照してください。

ノートブックの例については、AWS Labs の GitHub リポジトリで pyspark_mnist_kmeans を参照してください。このノートブック例では、EMR クラスターを基盤としない conda_python3 カーネルを使用しています。負荷が高いジョブでは、リモートの Spark クラスターを作成し、クラスターをノートブックインスタンスに接続します。

関連情報

Amazon SageMaker で Apache Spark を使用する

Amazon EMR で Spark 基盤の Amazon SageMaker ノートブックを作成する

コメントはありません

関連するコンテンツ