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

AnalyticDB:インタラクティブな Jupyter ジョブの開発

最終更新日:Jul 15, 2025

AnalyticDB for MySQL Spark を使用すると、Docker イメージを使用してインタラクティブな JupyterLab 開発環境を起動できます。この環境は、AnalyticDB for MySQL Spark に接続し、AnalyticDB for MySQL の計算リソースを使用してインタラクティブなテストと計算を実行するのに役立ちます。

前提条件

使用上の注意

  • AnalyticDB for MySQL Spark は、Python 3.7 または Scala 2.12 でのみインタラクティブな Jupyter ジョブをサポートしています。

  • インタラクティブな Jupyter ジョブは、一定時間アイドル状態が続くと Spark リソースを自動的に解放します。デフォルトの解放時間は 1,200 秒です(最後のコードブロックが実行されてから 1,200 秒後にリソースが自動的に解放されます)。Jupyter Notebook セルで次のコマンドを使用して spark.adb.sessionTTLSeconds パラメーターを構成し、Spark リソースの自動解放時間を変更できます。

    %%configure -f
    {
       "spark.adb.sessionTTLSeconds": "3600"  // Spark リソースの自動解放時間を 3600 秒に設定
    }

AnalyticDB for MySQL Spark に接続する

AnalyticDB for MySQL 提供のイメージの JupyterLab を使用して Spark に接続する

  1. Docker イメージをインストールして起動する

  2. AnalyticDB for MySQL の Jupyter イメージをプルします。次のコマンドを実行します。

    docker pull registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre
  3. インタラクティブな JupyterLab 開発環境を起動します。

    コマンド構文:

    docker run -it 
      -p {ホストポート}:8888 
      -v {ホストファイルパス}:{Docker ファイルパス} 
      registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre
      -d {ADB インスタンス ID} 
      -r {リソースグループ名} 
      -e {API エンドポイント} 
      -i {AK ID} 
      -k {AK シークレット}
      -t {StsToken} # StsToken または AK のいずれかを選択

    次の表にパラメーターを示します。

    パラメーター

    必須

    説明

    -p

    いいえ

    ホストポートをコンテナポートにマップします。-p {ホストポート}:{コンテナポート} の形式でパラメーターを指定します。

    ホストポートにランダムな値を指定し、コンテナポートを 8888 に設定します。例: -p 8888:8888

    -v

    いいえ

    ホストパスをマウントせずに Docker コンテナを無効にすると、編集ファイルが失われる可能性があります。Docker コンテナを無効にすると、コンテナは実行中のすべてのインタラクティブ Spark ジョブを終了しようとします。編集ファイルの損失を防ぐには、次のいずれかの方法を使用できます。

    • インタラクティブな JupyterLab 開発環境を起動するときに、ホストパスを Docker コンテナにマウントし、ジョブファイルを対応するファイルパスに保存します。-v {ホストパス}:{Docker ファイルパス} の形式でパラメーターを指定します。Docker コンテナのファイルパスにランダムな値を指定します。推奨値: /root/jupyter

    • Docker コンテナを無効にする前に、すべてのファイルがコピーされて保存されていることを確認してください。

    例: -v /home/admin/notebook:/root/jupyter。この例では、/home/admin/notebook パスに保存されているホストファイルが Docker コンテナの /root/jupyter パスにマウントされます。

    説明

    編集中のノートブックファイルを /tmp フォルダに保存します。Docker コンテナを無効にした後、ホストの /home/admin/notebook パスで対応するファイルを表示できます。Docker コンテナを再度有効にすると、ファイルの実行を続行できます。詳細については、「ボリューム」をご参照ください。

    -d

    はい

    AnalyticDB for MySQL Enterprise Edition、Basic Edition、または Data Lakehouse Edition クラスタの ID。

    AnalyticDB for MySQL コンソール にログインし、[クラスタ] ページに移動して、クラスタ ID を表示できます。

    -r

    はい

    AnalyticDB for MySQL クラスタのジョブリソースグループの名前。

    AnalyticDB for MySQL コンソールにログインし、左側のナビゲーションウィンドウで[クラスター管理 > Resource Management] を選択し、[リソースグループ] タブをクリックすると、リソースグループ名を表示できます。

    -e

    はい

    AnalyticDB for MySQL クラスタのエンドポイント。

    詳細については、「エンドポイント」をご参照ください。

    -i

    はい (特定のシナリオ)

    Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID と AccessKey シークレット。

    AccessKey ID と AccessKey シークレットの表示方法については、「アカウントと権限」をご参照ください。

    -k

    -t

    はい (特定のシナリオ)

    Security Token Service (STS) トークン。RAM ロールの 一時的な ID クレデンシャルです。

    権限を持つ RAM ユーザーは、自身の AccessKey ペアを使用して AssumeRole - RAM ロールの 一時的な ID クレデンシャルを取得する API 操作を呼び出し、RAM ロールの STS トークンを取得し、STS トークンを使用して Alibaba Cloud リソースにアクセスできます。

    例:

    docker run -it  -p 8888:8888 -v /home/admin/notebook:/root/jupyter registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre -d amv-bp164l******** -r test -e adb.aliyuncs.com -i LTAI**************** -k ****************

    インタラクティブな JupyterLab 開発環境を起動すると、次の情報が返されます。http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291 URL をコピーしてブラウザに貼り付け、JupyterLab を使用して AnalyticDB for MySQL Spark に接続できます。

    [I 2023-11-24 09:55:09.852 ServerApp] nbclassic | 拡張機能が正常にロードされました。
    [I 2023-11-24 09:55:09.852 ServerApp] sparkmagic 拡張機能が有効になりました!
    [I 2023-11-24 09:55:09.853 ServerApp] sparkmagic | 拡張機能が正常にロードされました。
    [I 2023-11-24 09:55:09.853 ServerApp] ローカルディレクトリ /root/jupyter からノートブックを提供しています
    [I 2023-11-24 09:55:09.853 ServerApp] Jupyter Server 1.24.0 は http://419e63fc7821:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291 で実行されています
    [I 2023-11-24 09:55:09.853 ServerApp] または http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
    [I 2023-11-24 09:55:09.853 ServerApp] Ctrl+C を使用してこのサーバーを停止し、すべてのカーネルをシャットダウンします (確認をスキップするには 2 回)。
    
    説明

    インタラクティブな JupyterLab 開発環境の起動時にエラーメッセージが表示された場合は、proxy_{timestamp}.log ファイルを参照してトラブルシューティングできます。

ローカルにインストールされた Jupyter Notebook を使用して Spark に接続する

Jupyter Notebook 環境をインストールして構成する

  1. JupyterLab または JupyterHub をインストールする

  2. インタラクティブな Spark ジョブを実行するために、SparkMagic プラグインを Jupyter にインストールする。Jupyter のバージョンに基づいて適切な方法を選択します。次の例は JupyterLab 3.x の場合です。

    重要

    すべてのオプションの手順は、スキップしたり順序を変更したりせずに、厳密な順序で実行する必要があります。いずれかの手順をスキップした場合、担当エンジニアは Jupyter の起動ログから環境の問題を分析できず、エラーを自分で解決する必要があります。

    1. SparkMagic をインストールします。

      pip install sparkmagic
    2. ipywidgets をインストールします。

      pip install ipywidgets 
    3. (オプション) ラッパーカーネルをインストールします。pip show sparkmagic を実行すると、sparkmagic のインストールパスが表示されます。そのディレクトリに切り替えて、以下を実行します。

       jupyter-kernelspec install sparkmagic/kernels/sparkkernel
       jupyter-kernelspec install sparkmagic/kernels/pysparkkernel
       jupyter-kernelspec install sparkmagic/kernels/sparkrkernel
    4. (オプション) SparkMagic の config.json 構成ファイル (デフォルトパスは ~/.sparkmagic/config.json) を変更し、127.0.0.1:5000 をリッスンする IP とポートに変更します。以下は構成構造の一部です。詳細については、関連する例 を参照してください。

      "kernel_python_credentials": {
      "username": "", // ユーザー名
      "password": "", // パスワード
      "url": "http://127.0.0.1:5000",  // リッスンする IP アドレスとポート
      "auth": "None" // 認証方式
      },
      "kernel_scala_credentials": {
      "username": "", // ユーザー名
      "password": "", // パスワード
      "url": "http://127.0.0.1:5000",  // リッスンする IP アドレスとポート
      "auth": "None" // 認証方式
      },
      "kernel_r_credentials": {
      "username": "", // ユーザー名
      "password": "", // パスワード
      "url": "http://127.0.0.1:5000"  // リッスンする IP アドレスとポート
      },
    5. (オプション) コードでクラスタを変更できるようにサーバー拡張機能を有効にします。

      jupyter server extension enable --py sparkmagic

AnalyticDB for MySQL プロキシを起動する

次のいずれかの方法を使用して、AnalyticDB for MySQL プロキシを起動できます。

方法 1: Docker を使用してプロキシを起動する

  1. Docker イメージをインストールして起動する

  2. AnalyticDB for MySQL の Jupyter イメージをプルします。次のコマンドを実行します。

    docker pull registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre
  3. Docker プロキシを起動します。次のコマンドを実行してコンテナを起動し、ローカルポート 5000 でリッスンします。

    docker run -it  
      -p 5000:5000
      -v {ホストファイルパス}:{Docker ファイルパス} 
      registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre
      -d {ADB インスタンス ID} 
      -r {リソースグループ名} 
      -e {API エンドポイント} 
      -i {AK ID} 
      -k {AK シークレット}
      -t {StsToken} # StsToken または AK のいずれかを選択
    

    次の表にパラメーターを示します。

    パラメーター

    必須

    説明

    -p

    いいえ

    ホストポートをコンテナポートにマップします。-p {ホストポート}:{コンテナポート} の形式でパラメーターを指定します。

    ホストポートにランダムな値を指定し、コンテナポートを 5000 に設定します。例: -p 5000:5000

    -v

    いいえ

    ホストパスをマウントせずに Docker コンテナを無効にすると、編集ファイルが失われる可能性があります。Docker コンテナを無効にすると、コンテナは実行中のすべてのインタラクティブ Spark ジョブを終了しようとします。編集ファイルの損失を防ぐには、次のいずれかの方法を使用できます。

    • インタラクティブな JupyterLab 開発環境を起動するときに、ホストパスを Docker コンテナにマウントし、ジョブファイルを対応するファイルパスに保存します。-v {ホストパス}:{Docker ファイルパス} の形式でパラメーターを指定します。Docker コンテナのファイルパスにランダムな値を指定します。推奨値: /root/jupyter

    • Docker コンテナを無効にする前に、すべてのファイルがコピーされて保存されていることを確認してください。

    例: -v /home/admin/notebook:/root/jupyter。この例では、/home/admin/notebook パスに保存されているホストファイルが Docker コンテナの /root/jupyter パスにマウントされます。

    説明

    編集中のノートブックファイルを /tmp フォルダに保存します。Docker コンテナを無効にした後、ホストの /home/admin/notebook パスで対応するファイルを表示できます。Docker コンテナを再度有効にすると、ファイルの実行を続行できます。詳細については、「ボリューム」をご参照ください。

    -d

    はい

    AnalyticDB for MySQL Enterprise Edition、Basic Edition、または Data Lakehouse Edition クラスタの ID。

    AnalyticDB for MySQL コンソール にログインし、[クラスタ] ページに移動して、クラスタ ID を表示できます。

    -r

    はい

    AnalyticDB for MySQL クラスタのジョブリソースグループの名前。

    AnalyticDB for MySQL コンソールにログインし、左側のナビゲーションウィンドウで[クラスター管理 > Resource Management]を選択し、[リソースグループ] タブをクリックすると、リソースグループ名を表示できます。

    -e

    はい

    AnalyticDB for MySQL クラスタのエンドポイント。

    詳細については、「エンドポイント」をご参照ください。

    -i

    はい (特定のシナリオ)

    Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID と AccessKey シークレット。

    AccessKey ID と AccessKey シークレットの表示方法については、「アカウントと権限」をご参照ください。

    -k

    -t

    はい (特定のシナリオ)

    Security Token Service (STS) トークン。RAM ロールの 一時的な ID クレデンシャルです。

    権限を持つ RAM ユーザーは、自身の AccessKey ペアを使用して AssumeRole - RAM ロールの 一時的な ID クレデンシャルを取得する API 操作を呼び出し、RAM ロールの STS トークンを取得し、STS トークンを使用して Alibaba Cloud リソースにアクセスできます。

方法 2: コマンドラインを使用してプロキシをインストールする

  1. ダウンロード し、プロキシをインストールします。

    pip install aliyun-adb-livy-proxy-0.0.1.zip
  2. 次のコマンドを実行してプロキシを起動します。

    説明

    AnalyticDB for MySQL プロキシが正常にインストールされた後、adbproxy --help を実行してパラメーターリストを表示できます。

    adbproxy  --db {ADB インスタンス ID} 
      --rg {リソースグループ名} 
      --endpoint {API エンドポイント} 
      --host 127.0.0.1 
      --port 5000 
      -i {AK ID} 
      -k {AK シークレット}
      -t {StsToken} # StsToken または AK のいずれかを選択

    次の表にパラメーターを示します。

    パラメーター

    必須

    説明

    --db

    はい

    AnalyticDB for MySQL Enterprise Edition、Basic Edition、または Data Lakehouse Edition クラスタの ID。

    AnalyticDB for MySQL コンソール にログインし、[クラスタ] ページに移動して、クラスタ ID を表示できます。

    --rg

    はい

    AnalyticDB for MySQL クラスタのジョブリソースグループの名前。

    AnalyticDB for MySQL コンソールにログインし、左側のナビゲーションウィンドウで [クラスター管理 > Resource Management] を選択し、[リソースグループ] タブをクリックすると、リソースグループ名を表示できます。

    --endpoint

    はい

    AnalyticDB for MySQL クラスタのエンドポイント。

    詳細については、「エンドポイント」をご参照ください。

    --host

    いいえ

    adbproxy サービスがバインドするローカル IP アドレス。デフォルト値は 127.0.0.1 です。

    --port

    いいえ

    adbproxy サービスがリッスンするポート番号。デフォルト値は 5000 です。

    -i

    はい (特定のシナリオ)

    AnalyticDB for MySQL アクセス権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID と AccessKey シークレット。

    AccessKey ID と AccessKey シークレットの取得方法については、「アカウントと権限」をご参照ください。

    -k

    -t

    はい (特定のシナリオ)

    Security Token Service (STS) トークン。RAM ロールの 一時的な ID クレデンシャルです。

    権限を持つ RAMユーザーは、自身の AccessKey ペアを使用して AssumeRole - RAM ロールの 一時的な ID クレデンシャルを取得する API 操作を呼び出し、RAM ロールの STS トークンを取得し、STS トークンを使用して Alibaba Cloud リソースにアクセスできます。

  3. 起動に成功すると、コンソールに関連するログ情報が表示されます。

Jupyter を起動する

次のコマンドを使用して、Jupyter インタラクティブ開発環境を起動します。

jupyter lab
説明

カスタムリスニングアドレスを設定した場合は、jupyter lab --ip=*** を実行して Jupyter を起動します。ここで、*** はカスタムリスニングアドレスです。

起動に成功すると、次の情報が返されます。http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291 URL をコピーしてブラウザに貼り付け、Jupyter を使用して AnalyticDB for MySQL Spark に接続できます。

[I 2025-07-02 17:36:16.051 ServerApp] ローカルディレクトリ /home/newuser からノートブックを提供しています
[I 2025-07-02 17:36:16.052 ServerApp] Jupyter Server 2.16.0 は http://419e63fc7821:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291 で実行されています
[I 2025-07-02 17:36:16.052 ServerApp] http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
[I 2025-07-02 17:36:16.052 ServerApp] Ctrl+C を使用してこのサーバーを停止し、すべてのカーネルをシャットダウンします (確認をスキップするには 2 回)。

Jupyter でジョブを実行する

リソースを起動し、ジョブの最大 ACU 使用量を定義する

  1. Jupyter を使用して AnalyticDB for MySQL Spark に接続した後、ページの [PySpark] をクリックして新しい PySpark ジョブを作成します。Spark ジョブは次のデフォルトの構成パラメーターで実行されます。

    {
       "kind": "pyspark", // ジョブの種類
        "heartbeatTimeoutInSecond": "60", // ハートビートタイムアウト(秒)
        "spark.driver.resourceSpec": "medium", // ドライバーのリソース仕様
        "spark.executor.resourceSpec": "medium", // Executor のリソース仕様
        "spark.executor.instances": "1", // Executor のインスタンス数
        "spark.dynamicAllocation.shuffleTracking.enabled": "true", // シャッフルトラッキングの有効化
        "spark.dynamicAllocation.enabled": "true", // 動的割り当ての有効化
        "spark.dynamicAllocation.minExecutors": "0", // 最小 Executor 数
        "spark.dynamicAllocation.maxExecutors": "1", // 最大 Executor 数
        "spark.adb.sessionTTLSeconds": "1200" // セッションの TTL(秒)
    }
  2. Spark アプリケーションの構成パラメーターを変更するには、%%configure -f ステートメントを使用します。

    1. カーネルを再起動します。

      トップナビゲーションバーで、[カーネル] > [カーネルの再起動とすべての出力のクリア] を選択します。実行中の Spark アプリケーションが Jupyter 開発ページに表示されていないことを確認してください。

      image

    2. Jupyter Notebook セルにカスタム Spark アプリケーション構成パラメーターを入力します。

      重要

      カスタム Spark アプリケーション構成パラメーターを指定する場合、spark.dynamicAllocation.enabled パラメーターを false に設定する必要があります。

      例:

      この構成では、Spark ジョブに 32 個の Executor を割り当て、各 Executor の仕様は medium (2 コアおよび 8 GB メモリ) です。ジョブ全体で合計 64 ACU の計算リソースを割り当てることができます。

      %%configure -f
      {
         "spark.driver.resourceSpec":"large", // ドライバーのリソース仕様
         "spark.sql.hive.metastore.version":"adb", // Hive Metastore のバージョン
         "spark.executor.resourceSpec":"medium", // Executor のリソース仕様
         "spark.adb.executorDiskSize":"100Gi", // Executor のディスクサイズ
         "spark.executor.instances":"32", // Executor のインスタンス数
         "spark.dynamicAllocation.enabled":"false", // 動的割り当ての有効化
         "spark.network.timeout":"30000", // ネットワークタイムアウト
         "spark.memory.fraction":"0.75", // メモリの割合
         "spark.memory.storageFraction":"0.3" // ストレージメモリ の割合
      }

      Spark アプリケーション構成パラメーターの詳細については、「Spark アプリケーション構成パラメーター」および「Spark 公式 Web サイト」をご参照ください。

  3. image ボタンをクリックして、Spark アプリケーション構成パラメーターを変更します。

    重要
    • Jupyter Notebook ページを閉じると、指定したカスタム構成パラメーターは有効ではなくなります。 Jupyter Notebook ページを再度開いた後に Spark アプリケーション パラメーターを指定しないと、デフォルトの構成パラメーターを使用して Spark ジョブが実行されます。

    • Jupyter Notebook ページで Spark ジョブを実行すると、ジョブのすべての構成は、バッチジョブを送信するときに必要な JSON 構造の conf オブジェクトではなく、JSON 構造に直接書き込まれます。

ジョブを実行する

  1. spark コマンドを入力して、SparkSession を開始します。image

    説明

    戻り値にある [リンク] をクリックして Spark UI インターフェイスにアクセスし、Spark ジョブログなどの情報を表示します。

  2. Jupyter Notebook セルで Spark SQL を実行して、AnalyticDB for MySQL クラスタで使用可能なデータベースのリストをクエリします。

    重要

    Spark SQL コードを実行する前に %%sql を追加する必要があります。追加しないと、デフォルトで Python コードとして解析されます。%%help を実行して、マジックコマンドとその使用方法の詳細を確認できます。

    %%sql
    show databases

    imageクエリ結果は AnalyticDB for MySQL の結果と一致しています。