日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過Jupyter Notebook與Serverless Spark進行交互

Jupyter Notebook是一個強大的交互式開發工具,您可以在Web界面中即時編寫和執行代碼,并實時查看結果,無需進行預編譯或單獨執行腳本。本文將為您介紹如何構建高效的與Serverless Spark交互的開發環境。

背景信息

Apache Livy通過REST接口與Spark進行交互,極大地簡化了Spark和應用程序服務器之間的通信復雜度。關于Livy API,請參見REST API

在使用Jupyter Notebook進行開發時,您可以通過使用sparkmagic插件或Docker鏡像兩種方式與Serverless Spark進行交互。請根據實際情況選擇最適合的方案。

方式

適用場景

方式一:使用Docker鏡像快速啟動環境

如果您希望快速構建一個獨立的開發環境,或者需要在不同機器上復現相同的設置,使用Docker鏡像將是一個便捷的選擇。

方式二:使用sparkmagic插件啟動環境

Jupyter Notebook的sparkmagic插件通過REST接口與Spark進行交互,目前sparkmagic支持Livy、Livy Lighter和Ilum三種協議。配置Jupyter Notebook中的sparkmagic插件,并利用Serverless Spark的Livy API,以實現一個高效的與遠程Spark集群交互的開發環境。

前提條件

方式一:使用Docker鏡像快速啟動環境

步驟一:創建Gateway及訪問Token

  1. 創建Gateway。

    1. 進入Gateway頁面。

      1. 登錄E-MapReduce控制臺

      2. 在左側導航欄,選擇EMR Serverless > Spark

      3. Spark頁面,單擊目標工作空間名稱。

      4. EMR Serverless Spark頁面,單擊左側導航欄中的運維中心 > Gateway

    2. Livy Gateway頁面,單擊創建Livy Gateway

    3. 在創建Gateway頁面,輸入名稱(例如,Livy-gateway),單擊創建

      其余參數請根據具體情況進行調整,更多參數信息請參見管理Gateway

  2. 創建Token。

    1. Gateway頁面,單擊Livy-gateway操作列的Token管理

    2. 單擊創建Token

    3. 創建Token對話框中,輸入名稱(例如,Livy-token),單擊確定

    4. 復制Token信息。

      重要

      Token創建完成后,請務必立即復制新Token的信息,后續不支持查看。如果您的Token過期或遺失,請選擇新建Token或重置Token。

步驟二:使用Docker拉取并啟動鏡像

  1. 執行以下命令,拉取鏡像。

    docker pull emr-registry-registry.cn-hangzhou.cr.aliyuncs.com/serverless-spark-public/emr-spark-jupyter:latest
  2. 執行以下命令,啟動鏡像。

    docker run -p <host_port>:8888 emr-registry-registry.cn-hangzhou.cr.aliyuncs.com/serverless-spark-public/emr-spark-jupyter:latest <endpoint> <token>

    涉及參數說明如下表所示。

    參數

    說明

    <host_port>

    替換為您的主機端口。

    <endpoint>

    替換為Livy Gateway的Endpoint信息。

    您可以在Livy Gateway頁面,單擊已創建的Livy Gateway的名稱,在總覽頁簽,查看Endpoint信息。

    <token>

    替換為您前一個步驟中復制的Token信息。

    待鏡像啟動后,您可以看到返回如下提示信息。

    [I 2024-09-23 05:38:14.429 ServerApp] jupyter_lsp | extension was successfully linked.
    [I 2024-09-23 05:38:14.432 ServerApp] jupyter_server_terminals | extension was successfully linked.
    [I 2024-09-23 05:38:14.436 ServerApp] jupyterlab | extension was successfully linked.
    [I 2024-09-23 05:38:14.439 ServerApp] notebook | extension was successfully linked.
    [I 2024-09-23 05:38:14.439 ServerApp] Writing Jupyter server cookie secret to /root/.local/share/jupyter/runtime/jupyter_cookie_secret
    [I 2024-09-23 05:38:14.596 ServerApp] notebook_shim | extension was successfully linked.
    [I 2024-09-23 05:38:14.624 ServerApp] notebook_shim | extension was successfully loaded.
    [I 2024-09-23 05:38:14.625 ServerApp] jupyter_lsp | extension was successfully loaded.
    [I 2024-09-23 05:38:14.626 ServerApp] jupyter_server_terminals | extension was successfully loaded.
    [I 2024-09-23 05:38:14.627 LabApp] JupyterLab extension loaded from /root/miniforge3/envs/livy/lib/python3.8/site-packages/jupyterlab
    [I 2024-09-23 05:38:14.627 LabApp] JupyterLab application directory is /root/miniforge3/envs/livy/share/jupyter/lab
    [I 2024-09-23 05:38:14.628 LabApp] Extension Manager is 'pypi'.
    [I 2024-09-23 05:38:14.637 ServerApp] jupyterlab | extension was successfully loaded.
    [I 2024-09-23 05:38:14.640 ServerApp] notebook | extension was successfully loaded.
    [I 2024-09-23 05:38:14.640 ServerApp] Serving notebooks from local directory: /root
    [I 2024-09-23 05:38:14.640 ServerApp] Jupyter Server 2.14.2 is running at:
    [I 2024-09-23 05:38:14.640 ServerApp] http://6eca53b95ca2:8888/lab?token=258c0dd75e22a10fb6e2c87ac738c2a7ba6a314c6b******
    [I 2024-09-23 05:38:14.640 ServerApp]     http://127.0.0.1:8888/lab?token=258c0dd75e22a10fb6e2c87ac738c2a7ba6a314c6b******
  3. 訪問Jupyter UI。

    請復制返回信息中的http://127.0.0.1:8888/lab?token=258c0dd75e22a10fb6e2c87ac738c2a7ba6a314c6b******鏈接到瀏覽器中,即可直接使用Jupyter服務連接Serverless Spark。

    說明
    • 如果您是通過遠程服務器進行連接,請將IP地址127.0.0.1替換為服務器的實際IP地址。

    • 如果啟動鏡像時的host_port不是8888,請將端口號替換為實際的端口號。

步驟:測試連通性

  1. 在JupyterLab頁面,單擊PySpark。

    image

  2. 執行以下命令,查詢可訪問的所有數據庫。

    spark.sql("show databases").show()
    

    返回信息如下所示。

    image

方式二:使用sparkmagic插件啟動環境

步驟一:創建Gateway及訪問Token

  1. 創建Gateway。

    1. 進入Gateway頁面。

      1. 登錄E-MapReduce控制臺

      2. 在左側導航欄,選擇EMR Serverless > Spark

      3. Spark頁面,單擊目標工作空間名稱。

      4. EMR Serverless Spark頁面,單擊左側導航欄中的運維中心 > Gateway

    2. Livy Gateway頁面,單擊創建Livy Gateway

    3. 在創建Gateway頁面,輸入名稱(例如,Livy-gateway),單擊創建

      其余參數請根據具體情況進行調整,更多參數信息請參見管理Gateway

  2. 創建Token。

    1. Gateway頁面,單擊Livy-gateway操作列的Token管理

    2. 單擊創建Token

    3. 創建Token對話框中,輸入名稱(例如,Livy-token),單擊確定

    4. 復制Token信息。

      重要

      Token創建完成后,請務必立即復制新Token的信息,后續不支持查看。如果您的Token過期或遺失,請選擇新建Token或重置Token。

步驟二:安裝并啟用sparkmagic插件

  1. 執行以下命令,安裝sparkmagic插件。

    pip install sparkmagic
  2. 根據您使用的Jupyter環境(Jupyter Notebook或JupyterLab),啟用相應的插件。

    • 對于Jupyter Notebook用戶

      jupyter nbextension enable --py --sys-prefix widgetsnbextension
    • 對于JupyterLab用戶

      jupyter labextension install "@jupyter-widgets/jupyterlab-manager"

sparkmagic插件的更多詳細信息和高級配置選項,請參見sparkmagic

步驟三:配置與啟動交互式Spark Session

  1. 訪問Jupyter UI,詳情請參見JupyterLab

  2. 載入與配置sparkmagic插件。

    首次載入sparkmagic插件可能要求重啟Jupyter。

    # 載入sparkmagic插件。
    %load_ext sparkmagic.magics
    # 管理session。
    %manage_spark
    # 調大創建session的超時時間。
    import sparkmagic.utils.configuration as conf
    conf.override("livy_session_startup_timeout_seconds", 1000)
    說明

    需要調大sparkmagic插件的啟動session超時時間,否則可能會出現無法啟動session的情況。

    image

  3. 管理Endpoint配置。

    1. 單擊Add Endpoint標簽。

    2. 配置以下信息,單擊Add endpoint

      image

      涉及參數信息如下。

      參數

      說明

      Auth type

      選擇Basic_Access。

      Address

      填寫格式為https://<Gateway的Endpoint信息>

      Username

      使用默認值即可。

      Password

      為您步驟一中復制的Token信息。

  4. 創建Session。

    1. 單擊Create Session標簽。

    2. 配置以下信息,單擊Create Session

      image

      涉及參數信息如下。

      參數

      說明

      Endpoint

      選擇前一個步驟添加的Endpoint。

      Name

      Session名稱,您可以自定義。

      Language

      本文以Python為例。

      Properties

      在Properties中可自定義driver和executor的資源配置。不填寫則默認為兩個executor,driver和executor各1 CU。

      說明

      Spark默認會有10%的堆外內存,例如設置4 GB內存,則實際消耗約為4.4 GB。

      Properties示例如下。

      {
        "driverMemory": "3584m",
        "driverCores": 1,
        "executorMemory": "7372m",
        "executorCores": 2,
        "numExecutors": 4
      }
  5. 驗證Session。

    請耐心等待1至5分鐘直至Session狀態變為idle,則表明Session已成功創建并準備就緒。此時,界面會展示新創建的Session詳情,您可以開始進行Pyspark交互式開發。

    image

    • 示例1:查詢可訪問的所有數據庫。

      %%spark
      spark.sql("show databases").show()

      返回信息如下所示。

      image

    • 示例2: 輸出從1到9的數字之和。

      %%spark
      import os
      sum = sc.range(1,10).sum()
      print("sum = " + str(sum))

      返回信息如下所示。

      image

(可選)步驟四:釋放Session資源

創建的Session會在閑置達到兩小時后自動終止,確保資源的及時回收。此外,您也可以手動單擊sparkmagic插件界面上的Delete來提前結束并釋放會話資源。