すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:ノートブックでサードパーティの Python ライブラリを使用する

最終更新日:Jun 22, 2026

ノートブックでインタラクティブな PySpark ジョブを実行する際、サードパーティの Python ライブラリを使用してデータ処理と分析を強化できます。このトピックでは、これらのライブラリをインストールするための 3 つのメソッドについて説明します。

背景情報

インタラクティブな PySpark 開発中に、サードパーティの Python ライブラリを使用することで、より柔軟でユーザーフレンドリなデータ処理と分析が可能になります。このトピックでは、利用可能な 3 つのメソッドについて説明します。ニーズに最も適したものを選択してください。

メソッド

ユースケース

メソッド 1: pip を使用した Python ライブラリのインストール

ノートブック内で Spark に関連しない変数 (Spark 計算の戻り値やカスタム変数など) の処理。

重要

このメソッドでインストールされたライブラリはセッション間で永続化されず、再起動のたびに再インストールする必要があります。

メソッド 2: 環境機能を使用したカスタム Python 環境の設定

各ノートブックセッションにサードパーティライブラリをプリインストールする必要がある PySpark ジョブ向け。

メソッド 3: Spark パラメーターを使用したカスタム Python 環境の設定

すべてのエグゼキュータでサードパーティライブラリを利用可能にする必要がある分散 PySpark コンピューティング向け。

前提条件

操作手順

メソッド 1: pip を使用したライブラリのインストール

  1. ノートブック開発ページに移動します。

    1. E-MapReduce コンソールにログインします。

    2. 左側のナビゲーションウィンドウで、EMR Serverless > スパーク を選択します。

    3. Spark ページで、対象のワークスペースの名前をクリックします。

    4. EMR Serverless Spark ページで、左側のナビゲーションウィンドウの Development をクリックします。

    5. 作成したノートブックをダブルクリックします。

  2. ノートブックの Python セルに、次のコマンドを入力して scikit-learn ライブラリをインストールし、セルを実行アイコン image をクリックします。

    pip install scikit-learn
  3. 別の Python セルに、次のコードを入力し、セルを実行アイコン image をクリックします。

    # ライブラリをインポートし、データセットを準備します。
    from sklearn import datasets
    # Iris データセットなどの組み込みデータセットをロードします。
    iris = datasets.load_iris()
    X = iris.data  # 特徴量データ
    y = iris.target  # ラベル
    # データセットを分割します。
    from sklearn.model_selection import train_test_split
    # データをトレーニングセットとテストセットに分割します。
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
    # サポートベクターマシン (SVM) モデルをトレーニングします。
    from sklearn.svm import SVC
    # 分類器インスタンスを作成します。
    clf = SVC(kernel='linear')  # 線形カーネルを使用します。
    # モデルをトレーニングします。
    clf.fit(X_train, y_train)
    # トレーニング済みモデルで予測を行います。
    y_pred = clf.predict(X_test)
    # モデルのパフォーマンスを評価します。
    from sklearn.metrics import classification_report, accuracy_score
    print(classification_report(y_test, y_pred))
    print("Accuracy:", accuracy_score(y_test, y_pred))
    

    出力は次のようになります:

                  precision    recall  f1-score   support
               0       1.00      1.00      1.00        19
               1       1.00      1.00      1.00        13
               2       1.00      1.00      1.00        13
        accuracy                           1.00        45
       macro avg       1.00      1.00      1.00        45
    weighted avg       1.00      1.00      1.00        45
    Accuracy: 1.0

メソッド 2: 環境機能を使用した環境の設定

ステップ 1: 実行環境の作成

  1. [環境] ページに移動します。

    1. E-MapReduce コンソールにログインします

    2. 左側のナビゲーションウィンドウで、EMR Serverless > Spark を選択します。

    3. [Spark] ページで、対象のワークスペース名をクリックします。

    4. EMR Serverless Spark ページで、左側のナビゲーションウィンドウの Environment をクリックします。

  2. Create Environment をクリックします。

  3. Create Environment ページで、Add Library をクリックします。

    パラメーターの詳細については、「実行環境の管理」をご参照ください。

  4. New Libraryダイアログボックスで、[ソースタイプ][PyPI] に設定し、[PyPI パッケージ]を指定して、OK をクリックします。

    [PyPI パッケージ] フィールドに、ライブラリの名前とバージョンを入力します。バージョンを指定しない場合、システムは最新バージョンをインストールします。例: scikit-learn

  5. create をクリックします。

    環境が作成されると、システムはその初期化を開始します。

ステップ 2: 実行環境の使用

説明

セッションを編集する前に停止してください。

  1. [ノートブックセッション] タブに移動します。

    1. EMR Serverless Spark ページで、左側のナビゲーションウィンドウで O&M Center > Sessions を選択します。

    2. Notebook Session タブをクリックします。

  2. 対象のノートブックセッションの [操作] 列で、編集 をクリックします。

  3. Environment ドロップダウンリストから、前のステップで作成した実行環境を選択し、Save Changes をクリックします。

  4. 右上隅の START をクリックします。

ステップ 3: Scikit-learn を使用したデータの分類

  1. ノートブック開発ページに移動します。

    1. EMR Serverless Spark ページで、左のナビゲーションウィンドウの Development をクリックします。

    2. 作成したノートブックをダブルクリックします。

  2. ノートブックの Python セルに、次のコードを入力し、セルを実行アイコン image をクリックします。

    # ライブラリをインポートし、データセットを準備します。
    from sklearn import datasets
    # Iris データセットなどの組み込みデータセットをロードします。
    iris = datasets.load_iris()
    X = iris.data  # 特徴量データ
    y = iris.target  # ラベル
    # データセットを分割します。
    from sklearn.model_selection import train_test_split
    # データをトレーニングセットとテストセットに分割します。
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
    # サポートベクターマシン (SVM) モデルをトレーニングします。
    from sklearn.svm import SVC
    # 分類器インスタンスを作成します。
    clf = SVC(kernel='linear')  # 線形カーネルを使用します。
    # モデルをトレーニングします。
    clf.fit(X_train, y_train)
    # トレーニング済みモデルで予測を行います。
    y_pred = clf.predict(X_test)
    # モデルのパフォーマンスを評価します。
    from sklearn.metrics import classification_report, accuracy_score
    print(classification_report(y_test, y_pred))
    print("Accuracy:", accuracy_score(y_test, y_pred))
                  

メソッド 3: Spark パラメーターを使用した環境の設定

このメソッドには、ipykernel 6.29 以降、jupyter_client 8.6 以降、および Python 3.8 以降が必要です。さらに、x86 アーキテクチャの Linux システムで環境をパッケージ化する必要があります。

ステップ 1: conda 環境のビルドとデプロイ

  1. 次のコマンドを実行して Miniconda をインストールします:

    wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
    chmod +x Miniconda3-latest-Linux-x86_64.sh
    ./Miniconda3-latest-Linux-x86_64.sh -b
    source miniconda3/bin/activate
  2. Python 3.8 と numpy を使用する conda 環境をビルドします。

    # conda 環境を作成してアクティブ化します。
    conda create -y -n pyspark_conda_env python=3.8
    conda activate pyspark_conda_env
    # サードパーティライブラリをインストールします。
    pip install numpy \
    ipykernel~=6.29 \
    jupyter_client~=8.6 \
    jieba \
    conda-pack
    # 環境をパッケージ化します。
    conda pack -f -o pyspark_conda_env.tar.gz

ステップ 2: OSS へのリソースファイルのアップロード

パッケージ化された pyspark_conda_env.tar.gz を Alibaba Cloud OSS にアップロードし、完全な OSS パスを記録します。詳細については、「簡単アップロード」をご参照ください。

ステップ 3: ノートブックセッションの設定と開始

説明

セッションを編集する前に停止してください。

  1. [ノートブックセッション] タブに移動します。

    1. EMR Serverless Spark ページで、左側のナビゲーションウィンドウでO&M Center > Sessionsを選択します。

    2. Notebook Session タブをクリックします。

  2. 対象のノートブックセッションの [操作] 列で、編集 をクリックします。

  3. Spark Configuration セクションで、次の設定を追加し、Save Changes をクリックします。

    spark.archives  oss://<yourBucket>/path/to/pyspark_conda_env.tar.gz#env
    spark.pyspark.python ./env/bin/python
    説明

    設定で、<yourBucket>/path/to を実際の OSS アップロードパスに置き換えてください。

  4. 右上隅の START をクリックします。

ステップ 4: Jieba を使用したテキストデータの処理

説明

Jieba は、中国語のテキスト分割用のサードパーティ Python ライブラリです。そのオープンソースライセンスについては、「LICENSE」をご参照ください。

  1. ノートブック開発ページに移動します。

    1. EMR Serverless Sparkページの左側のナビゲーションウィンドウで、Developmentをクリックします。

    2. 作成したノートブックをダブルクリックします。

  2. 新しい Python セルに、次のコマンドを入力して Jieba を使用した中国語の単語分割を実行し、セルを実行アイコン image をクリックします。

    import jieba
    strs = ["EMRServerlessSpark是一款专为大规模数据处理与分析而打造的全托管Serverless产品", "为您提供了高效的任务开发调试调度以及运维等一站式服务", "EMRServerlessSpark实现了资源调度和根据任务负载进行动态扩展"]
    sc.parallelize(strs).flatMap(lambda s: jieba.cut(s, use_paddle=True)).collect()

    コマンドは次の結果を返します:

    import jieba
    strs = ["EMRServerlessSpark是一款专为大规模数据处理与分析而打造的全托管Serverless产品", "为您提供了高效的任务开发调试调度以及运维等一站式服务", "EMRServerlessSpark实现了资源调度和根据任务..."]
    sc.parallelize(strs).flatMap(lambda s: jieba.cut(s, use_paddle=True)).collect()
    ['EMRServerlessSpark',
     '是',
     '一款',
     '专',
     '为',
     '大规模',
     '数据处理',
     '与',
     '分析',
     '而',
     '打造',
     '的',
     '全',
     '托管',
     'Serverless',
     '产品',
     '为',
     '您',
     '提供',
     '了',
     '高效',
     '的',
     '任务',
     '开发',
     '调试',
     '调度',
     '以及',
     '运维',
     '等',
     '一站式',
     '服务',
     'EMRServerlessSpark',
     '实现',
     '了',
     '资源',
     '调度',
     '和',
     '根据',
     '任务',
     '负载',
     '进行',
     '动态',
     '扩展']