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

Jupyter交互式作業開發

為了支持Spark REPL功能,阿里云數據湖分析團隊推出了本地安裝Jupyter Lab和DLA Proxy、使用Docker快速啟動環境兩種方案,幫助用戶將本地Jupyter Lab和阿里云DLA Spark連接在一起,從而可以利用DLA的彈性資源進行交互測試和計算。

重要

云原生數據湖分析(DLA)產品已退市,云原生數據倉庫 AnalyticDB MySQL 版湖倉版支持DLA已有功能,并提供更多的功能和更好的性能。AnalyticDB for MySQL相關使用文檔,請參見Jupyter交互式作業開發

注意事項

  • DLA Spark當前支持python3,Scala 2.11的Jupyter可交互作業。

  • 新版Jupyter Lab對Python的最低版本要求是Python 3.6。

  • 推薦使用Docker快速啟動環境方式來使用本功能。

  • 交互式作業會在空閑一段時間后自動釋放,默認釋放時間為最后一個代碼塊執行完畢后1200秒。用戶可以通過spark.dla.session.ttl來配置空閑多長時間后自動釋放交互式作業。

本地安裝Jupyter Lab和DLA Proxy

  1. 安裝DLA Livy Proxy。

    1. 安裝Aliyun OpenAPI SDK

      說明

      Aliyun OpenAPI SDK的最低版本要求是2.0.4

    2. 使用以下命令安裝Aliyun DLA Livy Proxy

      pip install aliyun-dla-livy-proxy-0.0.5.zip
      說明

      您需要使用root用戶安裝Aliyun DLA Livy Proxy,非root用戶進行安裝可能無法注冊命令到可執行目錄中。Aliyun DLA Livy Proxy安裝完成后,您可以在命令行中找到dlaproxy命令。

    3. 啟動DLA Livy Proxy。

      DLA Livy Proxy用于將阿里云DLA的接口翻譯為SparkMagic需要的Apache Livy語義接口,從而在本地建立HTTP PROXY監聽與轉發,端口默認是5000

      # 查看dlaproxy命令使用方式。
      $dlaproxy -h
      usage: dlaproxy [-h] --vcname VCNAME -i AK -k SECRET --region REGION [--host HOST] [--port PORT] [--loglevel LOGLEVEL]
      
      Proxy AliYun DLA as Livy
      
      optional arguments:
        -h, --help            show this help message and exit
        --vcname VCNAME       Virtual Cluster Name
        -i AK, --access-key-id AK
                              Aliyun Access Key Id
        -k SECRET, --access-key-secret SECRET
                              Aliyun Access Key Secret
        --region REGION       Aliyun Region Id
        --host HOST           Proxy Host Ip
        --port PORT           Proxy Host Port
        --loglevel LOGLEVEL   python standard log level
        
      # 直接啟動dla livy proxy。
      dlaproxy --vcname <vcname> -i akid -k aksec --region <regionid>

      上述代碼中出現的輸入參數說明如下:

      參數名稱

      參數說明

      --vcname

      DLA Spark虛擬集群名稱。

      說明

      您可以登錄Data Lake Analytics控制臺,在虛擬集群管理 > 集群名稱/實例ID > 詳情中查看虛擬集群名稱。

      -i

      RAM用戶的AccessKey ID。

      說明

      如果您已經創建了AccessKey,可以在RAM控制臺上查看相關信息。關于如何查看以及創建AccessKey,請參見創建AccessKey

      -k

      RAM用戶的AccessKey Secret。

      說明

      如果您已經創建了AccessKey,可以在RAM控制臺上查看相關信息。關于如何查看以及創建AccessKey,請參見創建AccessKey

      --region

      DLA所在地域對應的Region ID,詳細信息請參見地域和可用區

      --host

      服務綁定的Host,默認為127.0.0.1, 僅代理本地請求。可以修改為0.0.0.0或者其它地址監聽公網/內網的請求并代理,建議使用默認值。

      --port

      監聽端口, 默認為5000, 可以修改為其它端口,建議使用默認值。

      --loglevel

      日志級別, 默認為INFO,可以修改為ERROR、 WARNING、 INFO或DEBUG,建議使用默認值。

  2. 安裝Jupyter Lab。

    1. 可選:安裝venv

      說明

      推薦將整套環境安裝到Virtual Environment環境中,這樣后續的安裝不會破壞主賬號下的公共Python環境。

    2. 使用以下命令安裝Jupyter lab

      pip install jupyterlab #安裝Jupyter Lab。
      jupyter lab  #驗證一下是否安裝成功, 成功安裝的話, 可以看到啟動日志。
    3. 按照如下步驟安裝Sparkmagic。

      1. 安裝庫。

         pip install sparkmagic
      2. 確保ipywidgets成功運行。

         jupyter nbextension enable --py --sys-prefix widgetsnbextension
      3. 如果您使用的是JupyterLab,需要運行如下命令。

         jupyter labextension install "@jupyter-widgets/jupyterlab-manager"
      4. 使用pip show sparkmagic找到對應的文件夾,進入文件夾執行如下命令安裝kernels。

         jupyter-kernelspec install sparkmagic/kernels/sparkkernel
         jupyter-kernelspec install sparkmagic/kernels/pysparkkernel
         jupyter-kernelspec install sparkmagic/kernels/sparkrkernel
      5. 修改~/.sparkmagic/config.json上的配置文件,詳情請參見example_config.json

      6. 運行。

         jupyter serverextension enable --py sparkmagic

    安裝成功后,需要手動創建配置文件~/.sparkmagic/config.json,并將url的配置指向本地開啟的代理。示例如下:

    {
      "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://localhost:5000"
      },
    
      "logging_config": {
        "version": 1,
        "formatters": {
          "magicsFormatter": { 
            "format": "%(asctime)s\t%(levelname)s\t%(message)s",
            "datefmt": ""
          }
        },
        "handlers": {
          "magicsHandler": { 
            "class": "hdijupyterutils.filehandler.MagicsFileHandler",
            "formatter": "magicsFormatter",
            "home_path": "~/.sparkmagic"
          }
        },
        "loggers": {
          "magicsLogger": { 
            "handlers": ["magicsHandler"],
            "level": "DEBUG",
            "propagate": 0
          }
        }
      },
    
      "wait_for_idle_timeout_seconds": 15,
      "livy_session_startup_timeout_seconds": 600,
    
      "fatal_error_suggestion": "The code failed because of a fatal error:\n\t{}.\n\nSome things to try:\na) Make sure Spark has enough available resources for Jupyter to create a Spark context.\nb) Contact your Jupyter administrator to make sure the Spark magics library is configured correctly.\nc) Restart the kernel.",
    
      "ignore_ssl_errors": false,
    
      "session_configs": {
        "conf": {
          "spark.dla.connectors": "oss"
        }
      },
    
      "use_auto_viz": true,
      "coerce_dataframe": true,
      "max_results_sql": 2500,
      "pyspark_dataframe_encoding": "utf-8",
      
      "heartbeat_refresh_seconds": 30,
      "livy_server_heartbeat_timeout_seconds": 0,
      "heartbeat_retry_seconds": 10,
    
      "server_extension_default_kernel_name": "pysparkkernel",
      "custom_headers": {},
      
      "retry_policy": "configurable",
      "retry_seconds_to_sleep_list": [0.2, 0.5, 1, 3, 5],
      "configurable_retry_policy_max_retries": 8
    }
    說明

    示例中的session_configs是提交到DLA Spark的conf部分,如果需要加載JAR包,連接DLA的元數據服務請參考作業配置指南

    DLA Livy Proxy啟動后監聽的默認地址為127.0.0.1:5000,如果在啟動DLA Livy Proxy時修改了默認的Host和Port, 則需要修改上述配置文件中的url部分。示例:啟動時指定地址 --host 192.168.1.3 --port 8080, 則應當將上述配置文件中的urlhttp://192.168.1.3:8080,修改后如下所示:

    { 
      "kernel_python_credentials" : {
        "username": "",
        "password": "",
        "url": "http://192.168.1.3:8080",
        "auth": "None"
      },
      "kernel_scala_credentials" : {
        "username": "",
        "password": "",
        "url": "http://192.168.1.3:8080",
        "auth": "None"
      },
      "kernel_r_credentials": {
        "username": "",
        "password": "",
        "url": "http://192.168.1.3:8080"
      },
     "logging_config": {
        "version": 1,
        "formatters": {
          "magicsFormatter": { 
            "format": "%(asctime)s\t%(levelname)s\t%(message)s",
            "datefmt": ""
          }
        },
        "handlers": {
          "magicsHandler": { 
            "class": "hdijupyterutils.filehandler.MagicsFileHandler",
            "formatter": "magicsFormatter",
            "home_path": "~/.sparkmagic"
          }
        },
        "loggers": {
          "magicsLogger": { 
            "handlers": ["magicsHandler"],
            "level": "DEBUG",
            "propagate": 0
          }
        }
      },
    
      "wait_for_idle_timeout_seconds": 15,
      "livy_session_startup_timeout_seconds": 600,
    
      "fatal_error_suggestion": "The code failed because of a fatal error:\n\t{}.\n\nSome things to try:\na) Make sure Spark has enough available resources for Jupyter to create a Spark context.\nb) Contact your Jupyter administrator to make sure the Spark magics library is configured correctly.\nc) Restart the kernel.",
    
      "ignore_ssl_errors": false,
    
      "session_configs": {
        "conf": {
          "spark.dla.connectors": "oss"
        }
      },
    
      "use_auto_viz": true,
      "coerce_dataframe": true,
      "max_results_sql": 2500,
      "pyspark_dataframe_encoding": "utf-8",
      
      "heartbeat_refresh_seconds": 30,
      "livy_server_heartbeat_timeout_seconds": 0,
      "heartbeat_retry_seconds": 10,
    
      "server_extension_default_kernel_name": "pysparkkernel",
      "custom_headers": {},
      
      "retry_policy": "configurable",
      "retry_seconds_to_sleep_list": [0.2, 0.5, 1, 3, 5],
      "configurable_retry_policy_max_retries": 8
    }
  3. 運行Jupyter Lab。

    # 重新啟動Jupyter Lab。
    jupyter lab
    
    # 啟動DLA Livy Proxy。
    dlaproxy --vcname vcname -i akid -k aksec --region <regionid>

    Jupyter Lab啟動日志中會打印Jupyter Lab的本地地址。如下圖所示:日志打印

    當系統出現提示Aliyun DLA Proxy is ready,表明DLA Livy Proxy啟動成功。DLA Livy Proxy啟動成功后,您就可以正常使用Jupyter Lab了。Jupyter Lab的使用文檔,請參考jupyterlab官方地址

    運行Jupyter Lab任務,DLA中會自動創建DLA Spark作業,您可以登錄Data Lake Analytics控制臺,在Serverless Spark > 作業管理菜單進行查看和管理。如下圖所示,名稱以notebook_為開頭的Spark作業即為Jupyter交互式作業。作業管理

    當Jupyter Lab運行起來后,您仍然可以動態的修改配置,修改方式是在Jupyter Lab代碼單元中使用magic語句來覆蓋舊的配置項。執行后,Jupyter Lab會根據新的配置項重啟作業。

    # 重新啟動Jupyter Lab。
    jupyter lab
    # 啟動DLA Livy Proxy。
    dlaproxy --vcname vcname -i akid -k aksec --region <regionid>
    %%configure -f
    { 
        "conf": {
          "spark.sql.hive.metastore.version": "dla",
          "spark.dla.connectors": "oss"
        }
    }

    如果需要使用自制的依賴方法,您可以參考下述配置。

    %%configure -f
    { 
        "conf": {
          ...
        },
        "pyFiles": "oss://{your bucket name}/{path}/*.zip" # module
    }
  4. 關閉Jupyter Lab作業。

    單擊JupyterLab Kernel菜單欄下的Restart Kernel

使用Docker快速啟動環境

阿里云數據湖團隊同時提供Docker鏡像快速啟動一個Jupyter交互式開發環境,Docker的安裝和使用說明請參見Docker官方文檔

  1. 安裝并啟動Docker后,使用如下命令拉取DLA Jupyter鏡像。

    docker pull registry.cn-hangzhou.aliyuncs.com/dla_spark/dla-jupyter:0.5
  2. 拉取成功后,您可以使用如下命令查看此鏡像的幫助文件。

    docker run -ti registry.cn-hangzhou.aliyuncs.com/dla_spark/dla-jupyter:0.5
    
    Used to run jupyter lab for Aliyun DLA 
    Usage example: docker run -it -p 8888:8888 dla-jupyter:0.1 -i akid -k aksec -r cn-hanghzou -c spark-vc -l INFO 
        -i Aliyun AkId
        -k Aliyun AkSec
        -r Aliyun Region Id
        -c Aliyun DLA Virtual cluster name
        -l LogLevel

    上述代碼中出現的參數和DLA Proxy的參數非常相似,具體說明如下。

    參數名稱

    參數說明

    -c

    DLA Spark虛擬集群名稱。

    說明

    您可以登錄Data Lake Analytics控制臺。在虛擬集群管理 > 集群名稱/實例ID > 詳情中查看虛擬集群名稱。

    -i

    RAM用戶的AccessKey ID。

    說明

    如果您已經創建了AccessKey,可以在RAM控制臺上查看相關信息。關于如何查看以及創建AccessKey,請參見創建AccessKey

    -k

    RAM用戶的AccessKey Secret。

    說明

    如果您已經創建了AccessKey,可以在RAM控制臺上查看相關信息。關于如何查看以及創建AccessKey,請參見創建AccessKey

    -r

    DLA所在地域對應的Region ID,詳細信息請參見地域和可用區

    -l

    日志級別,默認為INFO,可以修改為ERROR、 WARNING、 INFO或DEBUG,建議使用默認值。

  3. 輸入正確的參數,在本地啟動對應的實例。

     docker run -it -p 8888:8888 registry.cn-hangzhou.aliyuncs.com/dla_spark/dla-jupyter:0.5 -i {AkId} -k {AkSec} -r {RegionId} -c {VcName}                           

    啟動成功后您可以看到如下圖所示的提示信息,將標注框中的網址貼入瀏覽器可開始使用Jupyter服務直連DLA Spark。啟動成功

注意事項

  • 在排查錯誤時需要觀察底層日志,文件瀏覽框中的dlaproxy.log即為日志記錄文件,正確的啟動信息如下圖所示。啟動信息

  • 在不掛載宿主機文件夾的情況下,關閉Docker后編輯的文件會丟失。Docker關閉時也會自動嘗試終止所有正在運行的Spark交互式作業。此時,您可以選擇如下兩種方案。

    • 在關閉Docker前保證所有的文件被妥善的復制保管。

    • 將本地文件夾掛載到Docker鏡像中,并將作業文件存儲在對應的文件夾下。

      以Linux環境為例,將文件夾/home/admin/notebook掛載到Docker實例/root/notebook文件夾下,啟動命令如下。

       docker run -it --privileged=true -p 8888:8888  -v /home/admin/notebook:/root/notebook registry.cn-hangzhou.aliyuncs.com/dla_spark/dla-jupyter:0.5 -i {AkId} -k {AkSec} -r {RegionId} -c {VcName}                           

      需要注意將編輯中的notebook最終另存到/tmp,關閉Docker示例后,在宿主機的/home/admin/notebook文件夾下可以看到對應的文件,下次啟動Docker實例時可以接著工作。

      說明

      更多信息,請參見 Docker卷管理文檔

常見問題處理

  • 問題現象:Jupyter Lab啟動失敗,出現如下報錯,如何處理?

    • [C 09:53:15.840 LabApp] Bad config encountered during initialization:

    • [C 09:53:15.840 LabApp] Could not decode '\xe6\x9c\xaa\xe5\x91\xbd\xe5\x90\x8d' for unicode trait 'untitled_notebook' of a LargeFileManager instance.

    解決方法:LANG=zn jupyter lab。

  • 問題現象:出現報錯$ jupyter nbextension enable --py --sys-prefix widgetsnbextension Enabling notebook extension jupyter-js-widgets/extension... - Validating: problems found: - require? X jupyter-js-widgets/extension,如何處理?

    解決方法:jupyter nbextension install --py widgetsnbextension --userjupyter nbextension enable widgetsnbextension --user --py

  • 問題現象:出現報錯ValueError: Please install nodejs >=12.0.0 before continuing. nodejs may be installed using conda or directly from the nodejs website.,如何處理?

    解決方法:conda install nodejs。關于安裝Conda請參考Conda官方文檔

  • 問題現象:安裝Sparkmagic時報錯失敗,如下圖所示,如何處理?報錯截圖

    解決方法:安裝Rust。

  • 問題現象:無法使用matplot進行繪圖, 即使加入了%matplotlib inline仍然會報錯如下圖所示。

    matplot報錯示意圖

    解決方法: 當使用云端PySpark時, 使用%matplot plt組合plt.show()繪制圖表, 效果如下圖所示。

    matplot正確用法