函式庫是一種可重複使用的程式碼套件——例如 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:系統管理員設定工作區的默認連結庫
若要設定預設連結庫,您必須是工作區的系統管理員。 身為系統管理員,您可以執行下列工作:
當您的筆記本和 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 install 指令在每次執行中可能會產生不一致的結果。 在環境中安裝函式庫,然後在管線中使用該環境。
高並發模式下不支援這個 %pip install 指令。
在筆記本參考執行中,不支援管理 Python 函式庫的內嵌指令。 請從參考筆記本中移除這些內嵌指令,以確保正確執行。
使用 %pip,而不是 !pip。 此 !pip 指令是 IPython 內建的 shell 指令,具有以下限制:
-
!pip只在驅動節點安裝套件,不在執行節點。 - 透過
!pipPackage 安裝的套件不會考慮與內建套件或已匯入筆記本套件的衝突。
%pip 處理這些情境。 透過 %pip 程式安裝的函式庫可在驅動程式與執行節點上使用,即使函式庫已匯入,仍會生效。
提示
命令 %conda install 通常需要比 %pip install 命令更長的時間才能安裝新的 Python 連結庫。 它會檢查完整的相依性並解決衝突。
使用 %conda install,以提高系統的可靠性和穩定性。 如果你確定要安裝的函式庫不會和執行環境裡的預設函式庫衝突,就用 %pip install 它。
如需所有可用的 Python 內嵌命令和釐清,請參閱 %pip 命令 和 %conda 命令。
透過內嵌安裝管理 Python 公用連結庫
這個範例展示了如何使用內嵌指令來管理函式庫。 假設你想使用 altair,一個強大的 Python 視覺化函式庫,進行一次性資料探索,而該函式庫尚未安裝在你的工作區中。 下列範例會使用 conda 命令來說明步驟。
您可以使用內嵌命令在筆記本工作階段上啟用 altair,而不會影響筆記本或其他項目的其他工作階段。
在筆記本程式碼儲存格中執行以下命令。 第一個命令會安裝altair程式庫。 此外,請安裝 vega_datasets,其中包含可用來可視化的語意模型。
%conda install altair # install latest version through conda command %conda install vega_datasets # install latest version through conda command儲存格的輸出表示安裝的結果。
在另一個筆記本儲存格中執行下列程序代碼,以匯入套件和語意模型。
import altair as alt from vega_datasets import data現在您可以試著使用在會話範圍內的 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 資料流函式庫:
在筆記本功能區中將工作語言切換至SparkR(R)。
在筆記本儲存格中執行下列命令,以安裝 caesar 程式庫。
install.packages("caesar")現在您可以在 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 路徑,然後在程式碼中進行替換。