全部產品
Search
文件中心

AnalyticDB:Jupyter互動式作業開發

更新時間:Jul 10, 2025

AnalyticDB for MySQLSpark支援使用Docker鏡像快速啟動Jupyter互動式開發環境,協助您使用本地Jupyter Lab串連AnalyticDB for MySQL Spark,從而利用AnalyticDB for MySQL的彈性資源進行互動測試和計算。

前提條件

注意事項

  • AnalyticDB for MySQL Spark當前僅支援Python 3.7、Scala 2.12版本的Jupyter互動作業。

  • Jupyter互動式作業會在空閑一段時間後自動釋放Spark資源,預設釋放時間為1200秒(即最後一個代碼塊執行完畢,1200秒後自動釋放)。您可在Jupyter Notebook Cell中通過如下命令配置spark.adb.sessionTTLSeconds參數,修改Spark資源自動釋放的時間。

    %%configure -f
    {
       "spark.adb.sessionTTLSeconds": "3600"
    }

串連AnalyticDB for MySQL Spark

使用AnalyticDB for MySQL提供鏡像中的JupyterLab串連Spark

  1. 安裝並啟動Docker鏡像

  2. 啟動Docker鏡像後,拉取AnalyticDB for MySQL Jupyter鏡像。命令如下:

    docker pull registry.cn-hangzhou.aliyuncs.com/adb-public-image/adb-spark-public-image:adb.notebook.0.5.pre
  3. 啟動Jupyter互動式開發環境。

    命令格式如下:

    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 Instance Id} 
      -r {Resource Group Name} 
      -e {API Endpoint} 
      -i {AK Id} 
      -k {AK Sec}
      -t {StsToken} # StsToken和AK二選一

    參數說明:

    參數名稱

    是否必填

    參數說明

    -p

    將宿主機連接埠綁定為容器連接埠。格式為-p 宿主機連接埠:容器連接埠

    宿主機連接埠可任意填寫,容器連接埠固定填寫為8888。本文樣本為-p 8888:8888

    -v

    在不掛載宿主機檔案夾的情況下,關閉Docker容器後編輯的檔案會丟失。Docker容器關閉時也會自動嘗試終止所有正在啟動並執行Spark互動式作業。您可以選擇如下兩種方案避免編輯檔案丟失:

    • 在啟動Jupyter互動式開發環境時,將宿主機檔案掛載到Docker容器中,並將作業檔案儲存體在對應的檔案路徑下。格式為-v 宿主機路徑:Docker容器檔案路徑。Docker容器檔案路徑可任意填寫,建議填寫為/root/jupyter

    • 在關閉Docker容器前保證所有的檔案被妥善地複製保管。

    本文樣本為-v /home/admin/notebook:/root/jupyter,表示將宿主機 /home/admin/notebook路徑下的檔案掛載到Docker容器的/root/jupyter路徑。

    說明

    需要注意將編輯中的notebook檔案最終另存到/tmp檔案夾,關閉Docker容器後,在宿主機的/home/admin/notebook檔案夾下可以看到對應的檔案,再次啟動Docker容器時可繼續執行。更多資訊,請參見Docker卷管理文檔

    -d

    AnalyticDB for MySQL企業版、基礎版及湖倉版叢集ID。

    您可以登入AnalyticDB MySQL控制台,在叢集列表查看叢集的ID。

    -r

    AnalyticDB for MySQL Job型資源群組名稱。

    您可以登入AnalyticDB MySQL控制台,在叢集管理 > 資源管理頁面,單擊資源群組管理頁簽,查看所有的資源群組資訊。

    -e

    AnalyticDB for MySQL叢集的服務存取點資訊。

    詳細資料請參見服務存取點

    -i

    條件必選

    阿里雲帳號或RAM使用者的AccessKey ID和AccessKey Secret。

    如何查看AccessKey ID和AccessKey Secret,請參見帳號與許可權

    -k

    -t

    條件必選

    RAM角色的臨時身份憑證,即安全性權杖(STS Token)。

    有許可權的RAM使用者可以使用自己的存取金鑰調用AssumeRole - 擷取扮演角色的臨時身份憑證介面,以擷取某個RAM角色的STS Token,從而使用STS Token訪問阿里雲資源。

    樣本:

    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 ****************

    啟動成功後,返回如下提示資訊,您將URLhttp://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291複製到瀏覽器,即可使用Jupyter服務直連AnalyticDB for MySQL Spark。

    [I 2023-11-24 09:55:09.852 ServerApp] nbclassic | extension was successfully loaded.
    [I 2023-11-24 09:55:09.852 ServerApp] sparkmagic extension enabled!
    [I 2023-11-24 09:55:09.853 ServerApp] sparkmagic | extension was successfully loaded.
    [I 2023-11-24 09:55:09.853 ServerApp] Serving notebooks from local directory: /root/jupyter
    [I 2023-11-24 09:55:09.853 ServerApp] Jupyter Server 1.24.0 is running at:
    [I 2023-11-24 09:55:09.853 ServerApp] http://419e63fc7821:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
    [I 2023-11-24 09:55:09.853 ServerApp]  or http://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291
    [I 2023-11-24 09:55:09.853 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
    說明

    啟動Jupyter環境時如果出現報錯,您可以查看proxy_{timestamp}.log日誌記錄檔案,排查並解決問題。

使用安裝在本地的Jupyter Notebook串連Spark

安裝與配置Jupyter Notebook環境

  1. 安裝JupyterLab或JupyterHub

  2. 在Jupyter中安裝SparkMagic外掛程式,以執行Spark互動式作業。請根據您的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",
      "auth": "None"
      },
      "kernel_scala_credentials": {
      "username": "",
      "password": "",
      "url": "http://127.0.0.1:5000",
      "auth": "None"
      },
      "kernel_r_credentials": {
      "username": "",
      "password": "",
      "url": "http://127.0.0.1:5000"
      },
    5. (可選)啟用伺服器擴充,以便通過代碼更改叢集。

      jupyter server extension enable --py sparkmagic

啟動AnalyticDB for MySQL代理

您可以選擇以下任意一種方法啟動AnalyticDB for MySQL代理。

方法一:通過Docker啟動代理

  1. 安裝並啟動Docker鏡像

  2. 啟動Docker鏡像後,拉取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 Instance Id} 
      -r {Resource Group Name} 
      -e {API Endpoint} 
      -i {AK Id} 
      -k {AK Sec}
      -t {StsToken} # StsToken和AK二選一

    參數說明:

    參數名稱

    是否必填

    參數說明

    -p

    將宿主機連接埠綁定為容器連接埠。格式為-p 宿主機連接埠:容器連接埠

    宿主機連接埠可任意填寫,容器連接埠固定填寫為5000。本文樣本為-p 5000:5000

    -v

    在不掛載宿主機檔案夾的情況下,關閉Docker容器後編輯的檔案會丟失。Docker容器關閉時也會自動嘗試終止所有正在啟動並執行Spark互動式作業。您可以選擇如下兩種方案避免編輯檔案丟失:

    • 在啟動Jupyter互動式開發環境時,將宿主機檔案掛載到Docker容器中,並將作業檔案儲存體在對應的檔案路徑下。格式為-v 宿主機路徑:Docker容器檔案路徑。Docker容器檔案路徑可任意填寫,建議填寫為/root/jupyter

    • 在關閉Docker容器前保證所有的檔案被妥善地複製保管。

    本文樣本為-v /home/admin/notebook:/root/jupyter,表示將宿主機 /home/admin/notebook路徑下的檔案掛載到Docker容器的/root/jupyter路徑。

    說明

    需要注意將編輯中的notebook檔案最終另存到/tmp檔案夾,關閉Docker容器後,在宿主機的/home/admin/notebook檔案夾下可以看到對應的檔案,再次啟動Docker容器時可繼續執行。更多資訊,請參見Docker卷管理文檔

    -d

    AnalyticDB for MySQL企業版、基礎版及湖倉版叢集ID。

    您可以登入AnalyticDB MySQL控制台,在叢集列表查看叢集的ID。

    -r

    AnalyticDB for MySQL Job型資源群組名稱。

    您可以登入AnalyticDB MySQL控制台,在叢集管理 > 資源管理頁面,單擊資源群組管理頁簽,查看所有的資源群組資訊。

    -e

    AnalyticDB for MySQL叢集的服務存取點資訊。

    詳細資料請參見服務存取點

    -i

    條件必選

    阿里雲帳號或RAM使用者的AccessKey ID和AccessKey Secret。

    如何查看AccessKey ID和AccessKey Secret,請參見帳號與許可權

    -k

    -t

    條件必選

    RAM角色的臨時身份憑證,即安全性權杖(STS Token)。

    有許可權的RAM使用者可以使用自己的存取金鑰調用AssumeRole - 擷取扮演角色的臨時身份憑證介面,以擷取某個RAM角色的STS Token,從而使用STS Token訪問阿里雲資源。

方法二:通過命令列安裝代理

  1. 下載並安裝代理

    pip install aliyun-adb-livy-proxy-0.0.1.zip
  2. 執行以下命令啟動代理。

    說明

    AnalyticDB for MySQL代理安裝成功後,可執行adbproxy --help查看參數列表。

    adbproxy  --db {ADB Instance Id} 
      --rg {Resource Group Name} 
      --endpoint {API Endpoint} 
      --host 127.0.0.1
      --port 5000
      -i {AK Id} 
      -k {AK Sec}
      -t {StsToken} # StsToken和AK二選一

    參數說明:

    參數名稱

    是否必填

    參數說明

    --db

    AnalyticDB for MySQL企業版、基礎版及湖倉版叢集ID。

    您可以登入AnalyticDB MySQL控制台,在叢集列表查看叢集的ID。

    --rg

    AnalyticDB for MySQL Job型資源群組名稱。

    您可以登入AnalyticDB MySQL控制台,在叢集管理 > 資源管理頁面,單擊資源群組管理頁簽,查看所有的資源群組資訊。

    --endpoint

    AnalyticDB for MySQL叢集的服務存取點資訊。

    詳細資料請參見服務存取點

    --host

    adbproxy服務綁定的本地IP地址,預設為 127.0.0.1

    --port

    adbproxy服務監聽的連接埠號碼,預設為5000

    -i

    條件必選

    阿里雲帳號或者具備AnalyticDB for MySQL存取權限的RAM使用者的AccessKey ID和AccessKey Secret。

    如何擷取AccessKey ID和AccessKey Secret,請參見帳號與許可權

    -k

    -t

    條件必選

    RAM角色的臨時身份憑證,即安全性權杖(STS Token)。

    有許可權的RAM使用者可以使用自己的存取金鑰調用AssumeRole - 擷取扮演角色的臨時身份憑證介面,以擷取某個RAM角色的STS Token,從而使用STS Token訪問阿里雲資源。

  3. 啟動成功後,控制台會輸出相關日誌資訊。

啟動Jupyster

使用以下命令啟動Jupyster互動開發環境。

jupyter lab
說明

若您設定了自訂監聽地址,請執行jupyter lab --ip=***啟動Jupyster,***為您的自訂監聽地址。

啟動成功後,返回如下提示資訊。您將URLhttp://127.0.0.1:8888/lab?token=1e2caca216c1fd159da607c6360c82213b643605f11ef291複製到瀏覽器,即可使用Jupyter服務串連到AnalyticDB for MySQL Spark。

[I 2025-07-02 17:36:16.051 ServerApp] Serving notebooks from local directory: /home/newuser
[I 2025-07-02 17:36:16.052 ServerApp] Jupyter Server 2.16.0 is running at:
[I 2025-07-02 17:36:16.052 ServerApp] 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] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

在Jupyter中運行作業

啟動資源並定義作業的最大ACU用量

  1. 用Jupyter服務串連AnalyticDB for MySQL Spark後,單擊頁面的PySpark,建立PySpark作業。此時Spark作業會使用預設的配置參數運行,預設配置參數如下:

    {
       "kind": "pyspark",
        "heartbeatTimeoutInSecond": "60",
        "spark.driver.resourceSpec": "medium",
        "spark.executor.resourceSpec": "medium",
        "spark.executor.instances": "1",
        "spark.dynamicAllocation.shuffleTracking.enabled": "true",
        "spark.dynamicAllocation.enabled": "true",
        "spark.dynamicAllocation.minExecutors": "0",
        "spark.dynamicAllocation.maxExecutors": "1",
        "spark.adb.sessionTTLSeconds": "1200"
    }
  2. 如果您想修改Spark應用配置參數,可以使用%%configure -f語句修改。

    1. 重啟kernel。

      單擊頁面頂部的Kernel > Restart Kernel and Clear All Outputs,確保當前Jupyter開發頁面下沒有任何運行中的Spark應用。

      image

    2. 在Jupyter Notebook Cell中輸入自訂的Spark應用配置參數。

      重要

      自訂Spark應用配置參數時必須將spark.dynamicAllocation.enabled配置為false

      樣本:

      此配置將為Spark作業分配32個Executor,每個Executor的規格為 medium(即2核8GB),整個作業最多可分配總計64 ACU的計算資源。

      %%configure -f
      {
         "spark.driver.resourceSpec":"large",
         "spark.sql.hive.metastore.version":"adb",
         "spark.executor.resourceSpec":"medium",
         "spark.adb.executorDiskSize":"100Gi",
         "spark.executor.instances":"32",
         "spark.dynamicAllocation.enabled":"false",
         "spark.network.timeout":"30000",
         "spark.memory.fraction":"0.75",
         "spark.memory.storageFraction":"0.3"
      }

      Spark應用配置參數的詳細介紹,請參見Spark應用配置參數說明Spark官網

  3. 單擊image按鈕,修改Spark應用配置參數。

    重要
    • 關閉Jupyter Notebook頁面後,自訂配置參數會失效。重新開啟Jupyter Notebook頁面時,需重新設定Spark應用參數,否則Spark作業會使用預設的應用配置參數運行。

    • 在Jupyter Notebook頁面執行Spark作業時,所有配置項都直接寫入到JSON結構中,無需像提交Batch類型的作業時寫入到conf的JSON對象中。

運行作業

  1. 輸入spark命令,啟動 SparkSession。image

    說明

    單擊傳回值中的Link,可進入Spark UI介面查看Spark作業的日誌等資訊。

  2. 在Jupyter Notebook Cell中執行Spark SQL,查詢AnalyticDB for MySQL叢集中當前可用資料庫列表。

    重要

    執行Spark SQL代碼前必須加%%sql,否則會預設解析為Python代碼處理。您可執行 %%help 瞭解更多Magic指令及其用法。

    %%sql
    show databases

    image查詢結果與AnalyticDB for MySQL中一致。