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

通過Jupyter Notebook與Serverless Spark進(jìn)行交互

Jupyter Notebook是一個(gè)強(qiáng)大的交互式開發(fā)工具,您可以在Web界面中即時(shí)編寫和執(zhí)行代碼,并實(shí)時(shí)查看結(jié)果,無需進(jìn)行預(yù)編譯或單獨(dú)執(zhí)行腳本。本文將為您介紹如何構(gòu)建高效的與Serverless Spark交互的開發(fā)環(huán)境。

背景信息

Apache Livy通過REST接口與Spark進(jìn)行交互,極大地簡(jiǎn)化了Spark和應(yīng)用程序服務(wù)器之間的通信復(fù)雜度。關(guān)于Livy API,請(qǐng)參見REST API

在使用Jupyter Notebook進(jìn)行開發(fā)時(shí),您可以通過使用sparkmagic插件或Docker鏡像兩種方式與Serverless Spark進(jìn)行交互。請(qǐng)根據(jù)實(shí)際情況選擇最適合的方案。

方式

適用場(chǎng)景

方式一:使用Docker鏡像快速啟動(dòng)環(huán)境

如果您希望快速構(gòu)建一個(gè)獨(dú)立的開發(fā)環(huán)境,或者需要在不同機(jī)器上復(fù)現(xiàn)相同的設(shè)置,使用Docker鏡像將是一個(gè)便捷的選擇。

方式二:使用sparkmagic插件啟動(dòng)環(huán)境

Jupyter Notebook的sparkmagic插件通過REST接口與Spark進(jìn)行交互,目前sparkmagic支持Livy、Livy Lighter和Ilum三種協(xié)議。配置Jupyter Notebook中的sparkmagic插件,并利用Serverless Spark的Livy API,以實(shí)現(xiàn)一個(gè)高效的與遠(yuǎn)程Spark集群交互的開發(fā)環(huán)境。

前提條件

方式一:使用Docker鏡像快速啟動(dòng)環(huán)境

步驟一:創(chuàng)建Gateway及訪問Token

  1. 創(chuàng)建Gateway。

    1. 進(jìn)入Gateway頁(yè)面。

      1. 登錄E-MapReduce控制臺(tái)

      2. 在左側(cè)導(dǎo)航欄,選擇EMR Serverless > Spark

      3. Spark頁(yè)面,單擊目標(biāo)工作空間名稱。

      4. EMR Serverless Spark頁(yè)面,單擊左側(cè)導(dǎo)航欄中的運(yùn)維中心 > Gateway

    2. Livy Gateway頁(yè)面,單擊創(chuàng)建Livy Gateway

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

      其余參數(shù)請(qǐng)根據(jù)具體情況進(jìn)行調(diào)整,更多參數(shù)信息請(qǐng)參見管理Gateway

  2. 創(chuàng)建Token。

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

    2. 單擊創(chuàng)建Token

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

    4. 復(fù)制Token信息。

      重要

      Token創(chuàng)建完成后,請(qǐng)務(wù)必立即復(fù)制新Token的信息,后續(xù)不支持查看。如果您的Token過期或遺失,請(qǐng)選擇新建Token或重置Token。

步驟二:使用Docker拉取并啟動(dòng)鏡像

  1. 執(zhí)行以下命令,拉取鏡像。

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

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

    涉及參數(shù)說明如下表所示。

    參數(shù)

    說明

    <host_port>

    替換為您的主機(jī)端口。

    <endpoint>

    替換為L(zhǎng)ivy Gateway的Endpoint信息。

    您可以在Livy Gateway頁(yè)面,單擊已創(chuàng)建的Livy Gateway的名稱,在總覽頁(yè)簽,查看Endpoint信息。

    <token>

    替換為您前一個(gè)步驟中復(fù)制的Token信息。

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

    [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。

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

    說明
    • 如果您是通過遠(yuǎn)程服務(wù)器進(jìn)行連接,請(qǐng)將IP地址127.0.0.1替換為服務(wù)器的實(shí)際IP地址。

    • 如果啟動(dòng)鏡像時(shí)的host_port不是8888,請(qǐng)將端口號(hào)替換為實(shí)際的端口號(hào)。

步驟:測(cè)試連通性

  1. 在JupyterLab頁(yè)面,單擊PySpark。

    image

  2. 執(zhí)行以下命令,查詢可訪問的所有數(shù)據(jù)庫(kù)。

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

    返回信息如下所示。

    image

方式二:使用sparkmagic插件啟動(dòng)環(huán)境

步驟一:創(chuàng)建Gateway及訪問Token

  1. 創(chuàng)建Gateway。

    1. 進(jìn)入Gateway頁(yè)面。

      1. 登錄E-MapReduce控制臺(tái)

      2. 在左側(cè)導(dǎo)航欄,選擇EMR Serverless > Spark

      3. Spark頁(yè)面,單擊目標(biāo)工作空間名稱。

      4. EMR Serverless Spark頁(yè)面,單擊左側(cè)導(dǎo)航欄中的運(yùn)維中心 > Gateway

    2. Livy Gateway頁(yè)面,單擊創(chuàng)建Livy Gateway

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

      其余參數(shù)請(qǐng)根據(jù)具體情況進(jìn)行調(diào)整,更多參數(shù)信息請(qǐng)參見管理Gateway

  2. 創(chuàng)建Token。

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

    2. 單擊創(chuàng)建Token

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

    4. 復(fù)制Token信息。

      重要

      Token創(chuàng)建完成后,請(qǐng)務(wù)必立即復(fù)制新Token的信息,后續(xù)不支持查看。如果您的Token過期或遺失,請(qǐng)選擇新建Token或重置Token。

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

  1. 執(zhí)行以下命令,安裝sparkmagic插件。

    pip install sparkmagic
  2. 根據(jù)您使用的Jupyter環(huán)境(Jupyter Notebook或JupyterLab),啟用相應(yīng)的插件。

    • 對(duì)于Jupyter Notebook用戶

      jupyter nbextension enable --py --sys-prefix widgetsnbextension
    • 對(duì)于JupyterLab用戶

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

sparkmagic插件的更多詳細(xì)信息和高級(jí)配置選項(xiàng),請(qǐng)參見sparkmagic

步驟三:配置與啟動(dòng)交互式Spark Session

  1. 訪問Jupyter UI,詳情請(qǐng)參見JupyterLab

  2. 載入與配置sparkmagic插件。

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

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

    需要調(diào)大sparkmagic插件的啟動(dòng)session超時(shí)時(shí)間,否則可能會(huì)出現(xiàn)無法啟動(dòng)session的情況。

    image

  3. 管理Endpoint配置。

    1. 單擊Add Endpoint標(biāo)簽。

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

      image

      涉及參數(shù)信息如下。

      參數(shù)

      說明

      Auth type

      選擇Basic_Access。

      Address

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

      Username

      使用默認(rèn)值即可。

      Password

      為您步驟一中復(fù)制的Token信息。

  4. 創(chuàng)建Session。

    1. 單擊Create Session標(biāo)簽。

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

      image

      涉及參數(shù)信息如下。

      參數(shù)

      說明

      Endpoint

      選擇前一個(gè)步驟添加的Endpoint。

      Name

      Session名稱,您可以自定義。

      Language

      本文以Python為例。

      Properties

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

      說明

      Spark默認(rèn)會(huì)有10%的堆外內(nèi)存,例如設(shè)置4 GB內(nèi)存,則實(shí)際消耗約為4.4 GB。

      Properties示例如下。

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

    請(qǐng)耐心等待1至5分鐘直至Session狀態(tài)變?yōu)?code data-tag="code" class="code blog-code" code-type="xCode">idle,則表明Session已成功創(chuàng)建并準(zhǔn)備就緒。此時(shí),界面會(huì)展示新創(chuàng)建的Session詳情,您可以開始進(jìn)行Pyspark交互式開發(fā)。

    image

    • 示例1:查詢可訪問的所有數(shù)據(jù)庫(kù)。

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

      返回信息如下所示。

      image

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

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

      返回信息如下所示。

      image

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

創(chuàng)建的Session會(huì)在閑置達(dá)到兩小時(shí)后自動(dòng)終止,確保資源的及時(shí)回收。此外,您也可以手動(dòng)單擊sparkmagic插件界面上的Delete來提前結(jié)束并釋放會(huì)話資源。