共用方式為


在 Microsoft Fabric 中管理 Apache Spark 連結庫

程式庫是一個預寫程式碼的集合,開發人員可以匯入以提供功能。 藉由使用連結庫,您不需要從頭開始撰寫程式碼來執行一般工作,即可節省時間和精力。 請改為匯入程式庫,並使用其函式和類別來實現所需的功能。 Microsoft Fabric 提供多個機制,可協助您管理和使用連結庫。

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

圖書館管理最佳做法摘要

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

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

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

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

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

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

如果您有不同程式代碼專案的通用連結庫,而且不需要經常更新, 請在環境中 安裝連結庫,並將 它附加至程式碼專案 是不錯的選擇。

發佈時,需要一段時間才能使環境中的函式庫生效。 根據程式庫的複雜度,通常需要 5 到 15 分鐘的時間。 在此過程中,系統會負責解決潛在的衝突,並下載所需的相依套件。

此方法的一個優點是,當附有環境並啟動Spark工作階段時,已成功安裝的函式庫會被保證可用。 它可節省維護專案通用連結庫的工作。

因為其穩定性,強烈建議用於管線案例。

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

如果您使用筆記本以互動方式撰寫程式代碼,請使用 內嵌安裝 來新增額外的 PyPI/conda 連結庫,或驗證自定義連結庫以供一次性使用是最佳做法。 Fabric 中的內嵌命令可讓您讓程式庫在目前的筆記本 Spark 工作階段中生效。 它允許快速安裝,但已安裝的程式庫不會在不同的會話中保留。

由於 %pip install 偶爾會生成不同的相依性樹狀結構,這可能會導致函式庫衝突,因此在管線執行中預設會自動關閉內嵌命令,不建議在您的管線中使用。

支援的程式庫類型摘要

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

內嵌安裝

內嵌命令支援管理每個筆記本會話中的程式庫。

Python 即時安裝

系統會重新啟動 Python 解釋器以套用連結庫的變更。 執行命令儲存格之前定義的任何變數都遺失。 強烈建議您將所有新增、刪除或更新 Python 套件的命令放在筆記本的開頭。

管理 Python 函式庫的內嵌指令在預設情況下,會在筆記本管線中停用。 如果您想要為管線啟用 %pip install,請在筆記本活動的參數中新增布林參數 "_inlineInstallationEnabled",並設為 True。

螢幕擷取畫面顯示為筆記本管線執行啟用 pip install 的設定。

備註

%pip install可能會時常導致結果不一致。 建議您在一個環境中安裝程式庫,並在管線中使用它。 命令 %pip install 目前在高併行模式中不受支援。 在筆記本參考執行中,不支援用於管理 Python 連結庫的內嵌命令。 若要確保執行的正確性,建議從參考的筆記本中移除這些內嵌命令。

我們建議使用 %pip 而不是 !pip!pip 是 IPython 的內建命令,其有下列限制:

  • !pip 只會在驅動程式節點上安裝套件,而不是執行程序節點。
  • 透過 !pip 安裝的套件不會影響與內建套件的衝突,或是否已在筆記本中匯入套件。

不過, %pip 處理這些案例。 透過 安裝 %pip 的連結庫可在驅動程式和執行程序節點上使用,即使連結庫已經匯入,仍然有效。

提示

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

您可能想要使用 %conda install ,以取得更高的可靠性和穩定性。 如果您確定要安裝的連結庫不會與執行時間環境中預安裝的連結庫衝突,您可以使用 %pip install

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

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

在此範例中,請參閱如何使用內嵌命令來管理連結庫。 假設您想要使用 適用於 Python 的強大視覺效果連結庫 altair 進行一次性資料探索。 假如程式庫未安裝在您的工作區中。 下列範例會使用 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"             

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",
    }
}        

程式碼儲存格使用 Lakehouse 的儲存體作為範例。 在筆記本總管中,您可以複製完整的 ABFS 檔案路徑,然後將其取代到程式碼中。 取得ABFS路徑之功能表命令的螢幕快照。