共用方式為


在 Microsoft Fabric 中管理 Apache Spark 連結庫

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

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

工作區設定中的連結庫管理

重要

不再支援工作區設定的連結庫管理。 若要將工作區連結庫和Spark屬性移轉至預設環境,請參閱 移轉工作區連結庫和Spark屬性

連結庫管理最佳做法摘要

下列案例描述最佳做法。

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

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

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

工作區中的筆記本和Spark作業定義會附加至 工作區設定。 他們會在工作區的預設環境中,啟動程式庫的工作階段。

案例 2:保存一或多個程式碼項目的連結庫規格

如果您想要儲存連結庫規格, 請在環境中 安裝連結庫,並將 它附加至程式碼項目

這種方法的其中一個優點是,它可節省執行一直需要通用連結庫的程式碼工作。 在環境中成功安裝之後,如果連結環境,程式庫在所有 Spark 工作階段中都有效。

另一個優點是,此方法支持低於工作區層級的連結庫設定粒度。 一個環境可以附加至多個程式碼成品。 如果您在一個需要相同連結庫的工作區中有筆記本或 Spark 作業定義的子集,請將它們附加至相同的環境。 工作區的系統管理員、成員或參與者可以建立、編輯及附加環境。

案例 3:互動式執行中的內嵌安裝

如果您對未安裝連結庫的互動式筆記本內的單次使用感興趣, 內嵌安裝 是最方便的選項。 Fabric 中的內嵌命令可讓您讓程式庫在目前的筆記本 Spark 工作階段中生效。 程式庫不會跨不同的工作階段保存。

有權限執行筆記本的使用者可以在 Spark 工作階段中安裝其他程式庫。

支援的連結庫類型摘要

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

重要

.jar連結庫目前有限制

  • 針對 Scala 使用者,.jar 檔案可以在環境中成功安裝,但對 Spark/Scala 工作階段而言無效。 安裝會以不同的連結庫覆寫內建連結庫。 新的 .jar 可在工作階段中運作。
  • 對於 Python 使用者,環境中目前不支援所有 .jar 檔案。 它們可以在環境中成功安裝,但在 PySpark 工作階段中為無效。
  • 您可以改為在筆記本工作階段層級安裝 .jar 檔案。

內嵌安裝

內嵌命令支援 Python 連結庫和 R 連結庫。

Python 內嵌安裝

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

管理 Python 連結庫的內嵌命令預設會在筆記本管線中停用。 如果您想要啟用 %pip install 管線,請在筆記本活動參數中將 「_inlineInstallationEnabled」 新增為 bool 參數等於 True。

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

注意

%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 自定義連結庫上傳至附加至 筆記本之 Lakehouse 的檔案資料夾。 移至您的 Lakehouse,選取檔案 資料夾中的 ... 圖示,然後上傳自定義連結庫。

上傳之後,請使用下列命令將自定義程式庫安裝到您的筆記本工作階段。

# install the .whl through pip command
%pip install /lakehouse/default/Files/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路徑的螢幕擷取畫面。