在 Microsoft Fabric 中管理 Apache Spark 連結庫

函式庫是一種可重複使用的程式碼套件——例如 PyPI 的 Python 套件、CRAN 的 R 套件,或 Java JAR——你可以匯入筆記本和 Spark 工作定義,無需從頭寫出。 Microsoft Fabric 提供多個機制,可協助您管理和使用連結庫。

  • 內建連結庫:每個網狀架構 Spark 執行階段都會提供一組豐富的熱門預安裝連結庫。 您可以在 Fabric Spark 執行時間中找到完整的內建連結庫清單。
  • 公用連結庫:公用連結庫是從目前支援的 PyPI 和 Conda 等存放庫來源。
  • 自訂連結庫:自定義連結庫是指您或組織所建置的程序代碼。 Fabric 支援 .whl.jar.tar.gz 格式。 Fabric 僅支援 R 語言的 .tar.gz 檔案。 針對 Python 自訂連結庫,請使用 .whl 格式。

圖書館管理最佳做法摘要

下列案例描述在 Microsoft Fabric 中使用連結庫時的最佳做法。

環境發佈模式(快速模式與完整模式)

當你在 Fabric 環境中安裝函式庫時,你會選擇一種發佈模式來控制函式庫如何交付到 Spark 會話。

  • 快速模式 大約5秒就能發佈。 函式庫是在筆記型電腦會話開始時安裝,而不是在發佈過程中。 若快速模式套件名稱與完整模式套件相同,快速模式版本僅在該會話中覆蓋完整模式版本。 使用快速模式進行快速、反覆的筆記本開發與早期實驗。
  • 全模式 會建立穩定且可重現的函式庫快照。 發佈通常需要 3 到 6 分鐘,因為系統會解決相依性並驗證相容性。 啟動工作階段需要多 1 到 3 分鐘來部署依賴項,具體時間取決於依賴項的大小。 對於需要一致且可重現環境的流程、排程執行及共享工作負載,則使用全模式。

完整模式搭配自訂直播池

為了結合全模式的穩定性與快速的會話啟動,請設定一個自訂的即時池,然後連接到全模式環境。 活池會事先使用全模式函式庫快照更新叢集,確保會話在約 5 秒內啟動,同時保留快照的可重現性。

關於每種模式的詳細資訊,請參見 「管理 Fabric 環境中的函式庫」。

案例 1:系統管理員設定工作區的默認連結庫

若要設定預設連結庫,您必須是工作區的系統管理員。 身為系統管理員,您可以執行下列工作:

  1. 建立新環境
  2. 在環境中安裝所需的程式庫
  3. 將此環境附加為工作區預設值

當您的筆記本和 Spark 作業定義附加至 工作區設定時,它們會啟動會話,使用安裝在工作區預設環境中的函式庫。

情境 2:保持一或多個程式碼項目的庫規格

如果你有針對不同程式碼項目的共用函式庫,且不需要頻繁更新,就把 函式庫安裝在環境中 ,並 附加到程式碼項目上。

發佈時間取決於你選擇的模式。 快速模式大約 5 秒內發布,並在會話開始時安裝函式庫。 完整模式解決相依性並建立穩定快照;發佈通常需要 3 到 6 分鐘,而會話啟動會額外增加 1 到 3 分鐘用於相依性部署。

此方法的好處在於,當 Spark session 啟動且環境載入時,能確保成功安裝的函式庫可用。 它省去維護專案共用函式庫的麻煩,且因其穩定性而被推薦用於管線情境。

情境 3:互動式執行中的內嵌式安裝

如果你是在筆記本中互動式寫程式,內 嵌安裝 是新增 PyPI 或 Conda 函式庫,或驗證自訂函式庫以供一次性使用的最佳方式。 內嵌指令會讓圖書館只在目前筆記本的 Spark 會話中使用——它們允許快速安裝,但已安裝的函式庫不會跨會話持續存在。

因為 %pip install 每次執行都會產生不同的依賴樹,可能導致函式庫衝突,所以在管道執行中預設為關閉內嵌命令,不建議用於管道。

備註

透過內嵌指令(如 %pip install%conda install)安裝的函式庫,以及從筆記本或環境資源資料夾新增的函式庫,皆以當前會話或筆記本為範圍。 不論環境發佈在快速模式或完整模式下,他們都不會受到影響。

支援的程式庫類型摘要

庫類型 環境庫管理 內嵌安裝
Python Public (PyPI & Conda) 支援 支援
Python 自定義 (.whl) 支援 支援
R Public (CRAN) 不支援 支援
R 自訂 (.tar.gz) 支援作為自訂庫 支援
JAR檔案 支援作為自訂庫 支援

內嵌安裝

內嵌指令讓你能在個別筆記本會話中管理資料庫。

Python 即時安裝

系統會重新啟動 Python 直譯器以套用函式庫變更。 執行命令儲存格之前定義的任何變數都遺失。 把所有新增、刪除或更新 Python 套件的指令 都放在筆記本的開頭

在預設情況下,筆記本管線執行中會禁用管理 Python 函式庫的內嵌指令。 要啟用 %pip install 管線,請在筆記本活動的參數中新增一個布林參數_inlineInstallationEnabled,並設定為True

截圖顯示啟用pip安裝的配置,以運行筆記本管道。

備註

這個 %pip install 指令在每次執行中可能會產生不一致的結果。 在環境中安裝函式庫,然後在管線中使用該環境。 高並發模式下不支援這個 %pip install 指令。 在筆記本參考執行中,不支援管理 Python 函式庫的內嵌指令。 請從參考筆記本中移除這些內嵌指令,以確保正確執行。

使用 %pip,而不是 !pip。 此 !pip 指令是 IPython 內建的 shell 指令,具有以下限制:

  • !pip 只在驅動節點安裝套件,不在執行節點。
  • 透過 !pip Package 安裝的套件不會考慮與內建套件或已匯入筆記本套件的衝突。

%pip 處理這些情境。 透過 %pip 程式安裝的函式庫可在驅動程式與執行節點上使用,即使函式庫已匯入,仍會生效。

提示

命令 %conda install 通常需要比 %pip install 命令更長的時間才能安裝新的 Python 連結庫。 它會檢查完整的相依性並解決衝突。

使用 %conda install,以提高系統的可靠性和穩定性。 如果你確定要安裝的函式庫不會和執行環境裡的預設函式庫衝突,就用 %pip install 它。

如需所有可用的 Python 內嵌命令和釐清,請參閱 %pip 命令%conda 命令

透過內嵌安裝管理 Python 公用連結庫

這個範例展示了如何使用內嵌指令來管理函式庫。 假設你想使用 altair,一個強大的 Python 視覺化函式庫,進行一次性資料探索,而該函式庫尚未安裝在你的工作區中。 下列範例會使用 conda 命令來說明步驟。

您可以使用內嵌命令在筆記本工作階段上啟用 altair,而不會影響筆記本或其他項目的其他工作階段。

  1. 在筆記本程式碼儲存格中執行以下命令。 第一個命令會安裝altair程式庫。 此外,請安裝 vega_datasets,其中包含可用來可視化的語意模型。

    %conda install altair          # install latest version through conda command
    %conda install vega_datasets   # install latest version through conda command
    

    儲存格的輸出表示安裝的結果。

  2. 在另一個筆記本儲存格中執行下列程序代碼,以匯入套件和語意模型。

    import altair as alt
    from vega_datasets import data
    
  3. 現在您可以試著使用在會話範圍內的 altair 程式庫。

    # load a simple dataset as a pandas DataFrame
    cars = data.cars()
    alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
    ).interactive()
    

透過內嵌安裝管理 Python 自定義連結庫

您可以將 Python 自訂連結庫上傳至筆記本或附加環境的資源資料夾。 資源資料夾是每個筆記本和環境內建的檔案系統。 如需詳細資訊,請參閱 筆記本資源 。 上傳函式庫後,你可以拖放到程式碼格,自動產生安裝指令。 或者你可以執行以下指令:

# install the .whl through pip command from the notebook built-in folder
%pip install "builtin/wheel_file_name.whl"             

備註

透過內嵌指令從 Resources 資料夾安裝的自訂函式庫,均為會話專用及筆記本專用。 他們不會受到環境出版的影響。

R 內嵌安裝

若要管理 R 連結庫,Fabric 支援 install.packages()remove.packages()devtools:: 命令。 如需所有可用的 R 內嵌命令和釐清,請參閱 install.packages 命令remove.package 命令

透過內嵌安裝管理 R 公用連結庫

遵循此範例逐步解說安裝 R 公用連結庫的步驟。

若要安裝 R 資料流函式庫:

  1. 在筆記本功能區中將工作語言切換至SparkR(R)

  2. 在筆記本儲存格中執行下列命令,以安裝 caesar 程式庫。

    install.packages("caesar")
    
  3. 現在您可以在 Spark 作業中嘗試使用工作階段範圍的 caesar 程式庫。

    library(SparkR)
    sparkR.session()
    
    hello <- function(x) {
    library(caesar)
    caesar(x)
    }
    spark.lapply(c("hello world", "good morning", "good evening"), hello)
    

透過嵌入式安裝管理 Jar 程式庫

你可以用以下指令將 .jar 檔案加入筆記本會話。

%%configure -f
{
    "conf": {
        "spark.jars": "abfss://<<Lakehouse prefix>>.dfs.fabric.microsoft.com/<<path to JAR file>>/<<JAR file name>>.jar",
    }
}        

前述程式碼單元以湖屋儲存為例。 在筆記本瀏覽器中,您可以複製完整的 ABFS 路徑,然後在程式碼中進行替換。 取得ABFS路徑之功能表命令的螢幕快照。