程式庫
若要讓協力廠商或自訂程式碼可供您叢集上執行的筆記本和工作使用,您可以安裝程式庫。 連結庫可以用 Python、Java、Scala 和 R 撰寫。您可以上傳 Python、Java 和 Scala 連結庫,並指向 PyPI、Maven 和 CRAN 存放庫中的外部套件。
Azure Databricks 在 Databricks Runtime 中包含許多通用程式庫。 若要查看包含在 Databricks Runtime 中的程式庫,請查看 Databricks Runtime 版本資訊的系統環境小節,以了解您的 Databricks Runtime 版本。
注意
Microsoft 支援服務有助於找出並解決與 Azure Databricks 所安裝和維護的程式庫相關的問題。 對於包括程式庫在內的第三方元件,Microsoft 提供了符合商業原則的支援,以協助您進一步針對問題進行疑難排解。 Microsoft 支援服務會盡全力提供協助,或許能幫助您解決問題。 針對 Github 上託管的開放原始碼連接器和專案,我們建議您在 Github 上提出問題並追蹤。 透過標準支援案例提交程式,不支援像是陰影 jar 或建立 Python 程式庫等開發工作:他們需要諮詢互動,以加快解決速度。 支援可能會要求您接觸其他管道,以獲得開放原始碼技術並於其中找到該技術的深度專業知識。 這樣的社群網站有好幾個;其中的兩個範例是 Azure Databricks 的 Microsoft Q&A 頁面和 Stack Overflow。
叢集範圍的連結庫
您可以在叢集上安裝連結庫,讓叢集上執行的所有筆記本和作業都能使用它們。 Databricks 支援 Python、JAR 和 R 連結庫。 請參閱叢集程式庫。
您可以直接從下列來源安裝叢集連結庫:
並非所有位置都支援所有類型的連結庫或所有計算組態。 如需設定建議,請參閱 上傳連結庫 的建議。
重要
使用 Databricks Runtime 14.3 LTS 及更舊版本時,可從 DBFS 安裝程式庫。 不過,任何工作區使用者都可以修改儲存在 DBFS 的程式庫檔案。 若要提高 Azure Databricks 工作區程式庫的安全性,在 Databricks Runtime 15.1 和更新版本預設會取代及停用 DBFS 根目錄中的程式庫檔案。 請參閱在 DBFS 根目錄儲存程式庫已被取代,並預設為停用。
相反地,Databricks 建議將所有程式庫,包括 Python 程式庫、JAR 檔案及 Spark 連接器上傳至工作區檔案或 Unity 目錄磁碟區,或使用程式庫套件存放庫。 如果您的工作負載不支援這些模式,您也可以使用儲存在雲端物件記憶體的程式庫。
如需完整的連結庫支持資訊,請參閱 Python 連結庫支援、 Java 和 Scala 連結庫支援,以及 R 連結庫支援。
上傳連結庫的建議
Databricks 支援大部分的 Python、JAR 和 R 連結庫組態安裝,但有些不支援的案例。 建議您將連結庫上傳至支援以共用存取模式安裝到計算的來源位置,因為這是所有工作負載的建議模式。 請參閱存取模式。 使用共用存取模式排程作業時,請使用 服務主體執行作業。
重要
只有在共用存取模式不支援必要的功能時,才能搭配單一使用者存取模式使用計算。 不建議在 Databricks 上設定任何隔離共用存取模式。
下表提供 Databricks Runtime 版本和 Unity 目錄啟用所組織的建議。
組態 | 建議 |
---|---|
使用 Unity 目錄的 Databricks Runtime 13.3 LTS 和更新版本 | 從 Unity 目錄磁碟區安裝具有共用存取模式的計算連結庫,並針對所有帳戶使用者授與 READ。 如果適用,Maven 座標和 JAR 連結庫路徑必須新增至 允許清單。 |
不含 Unity 目錄的 Databricks Runtime 11.3 LTS 和更新版本 | 從 工作區檔案安裝連結庫。 (檔案大小限制為 500 MB。) |
Databricks Runtime 10.4 LTS 和以下版本 | 從 雲端物件記憶體安裝連結庫。 |
Python 連結庫支援
下表指出 Python 轉輪檔案的 Databricks 執行時間版本相容性,適用於以連結庫來源位置為基礎的不同叢集存取模式。 請參閱 Databricks Runtime 版本資訊版本和相容性 和 存取模式。
在 Databricks Runtime 15.0 和更新版本中,您可以使用 requirements.txt 檔案 來管理 Python 相依性。 這些檔案可以上傳至任何支援的來源位置。
注意
只有在 Databricks Runtime 13.3 LTS 及更早版本中,才支援安裝 Python egg 檔案,且僅適用於單一使用者模式或無隔離的共用存取模式。 此外,您無法在磁碟區或工作區檔案上安裝 Python egg 檔案。 請改用 Python 轉輪檔案,或從 PyPI 安裝套件。
共用存取模式 | 單一使用者存取模式 | 沒有隔離共享存取模式 (舊版) | |
---|---|---|---|
PyPI | 13.3 LTS 和更新版本 | 所有支援的 Databricks 執行時間版本 | 所有支援的 Databricks 執行時間版本 |
工作區檔案 | 13.3 LTS 和更新版本 | 13.3 LTS 和更新版本 | 14.1 和更新版本 |
磁碟區 | 13.3 LTS 和更新版本 | 13.3 LTS 和更新版本 | 不支援 |
雲端儲存空間 | 13.3 LTS 和更新版本 | 所有支援的 Databricks 執行時間版本 | 所有支援的 Databricks 執行時間版本 |
DBFS (不建議) | 不支援 | 14.3 和以下版本 | 14.3 和以下版本 |
Java 和 Scala 連結庫支援
下表根據連結庫來源位置,指出不同叢集存取模式 JAR 檔案的 Databricks 運行時間版本相容性。 請參閱 Databricks Runtime 版本資訊版本和相容性 和 存取模式。
注意
共用存取模式需要系統管理員將 JAR 連結庫的 Maven 座標和路徑新增至 allowlist
。 請參閱共用計算上的 Allowlist 程式庫和 init 指令碼。
共用存取模式 | 單一使用者存取模式 | 沒有隔離共享存取模式 (舊版) | |
---|---|---|---|
Maven | 13.3 LTS 和更新版本 | 所有支援的 Databricks 執行時間版本 | 所有支援的 Databricks 執行時間版本 |
工作區檔案 | 不支援 | 不支援 | 14.1 和更新版本 |
磁碟區 | 13.3 LTS 和更新版本 | 13.3 LTS 和更新版本 | 不支援 |
雲端儲存空間 | 13.3 LTS 和更新版本 | 所有支援的 Databricks 執行時間版本 | 所有支援的 Databricks 執行時間版本 |
DBFS (不建議) | 不支援 | 14.3 和以下版本 | 14.3 和以下版本 |
R 連結庫支援
下表指出適用於不同叢集存取模式之CRAN套件的 Databricks 運行時間版本相容性。 請參閱 Databricks Runtime 版本資訊版本和相容性 和 存取模式。
共用存取模式 | 單一使用者存取模式 | 沒有隔離共享存取模式 (舊版) | |
---|---|---|---|
CRAN | 不支援 | 所有支援的 Databricks 執行時間版本 | 所有支援的 Databricks 執行時間版本 |
筆記本範圍的程式庫
適用於 Python 和 R 的筆記本範圍連結庫可讓您安裝連結庫,並建立範圍設定為筆記本會話的環境。 這些連結庫不會影響在相同叢集上執行的其他筆記本。 筆記本範圍的連結庫不會保存,而且必須針對每個會話重新安裝。 當您需要特定筆記本的自訂環境時,請使用筆記本範圍的程式庫。
注意
無法在筆記本層級安裝 JAR。
重要
工作區連結庫已被取代,不應使用。 請參閱工作區連結庫(舊版)。 不過,將連結庫儲存為工作區檔案與工作區連結庫不同,但仍受到完全支援。 您可以直接將儲存為工作區檔案的程式庫安裝到計算或作業工作。
Python 環境管理
下表提供可用來在 Azure Databricks 中安裝 Python 連結庫的選項概觀。
注意
-
使用 conda 型環境的自定義容器與筆記本範圍連結庫和 Databricks Runtime 10.4 LTS 和更新版本中的叢集連結庫不相容。 相反地,Azure Databricks 建議直接在映像中安裝程式庫,或使用 init 指令碼。 若要在這些案例中繼續使用叢集程式庫,您可以將 Spark 組態
spark.databricks.driverNfs.clusterWidePythonLibsEnabled
設定為false
。 Spark 設定的支援將會在 2021 年 12 月 31 日或之後移除。
Python 套件來源 | 具有 %pip 的筆記本範圍連結庫 | 具有基底環境 YAML 檔案的筆記本範圍連結庫 | 叢集程式庫 | 使用作業 API 的作業連結庫 |
---|---|---|---|---|
PyPI | 使用 %pip install 。 請參閱 範例。 |
將 PyPI 套件名稱新增至基底環境 YAML 檔案。 請參閱 範例。 | 選取 [PyPI] 作為來源。 | 將新的 pypi 物件新增至作業連結庫,並指定 package 欄位。 |
私人 PyPI 鏡像,例如 Nexus 或 Artifactory | 使用 %pip install 與 --index-url 選項。
秘密管理 可供使用。 請參閱 範例。 |
-–index-url 將 新增至基底環境 YAML 檔案。
秘密管理 可供使用。 請參閱 範例。 |
不支援。 | 不支援。 |
具有原始來源的 VCS,例如 GitHub | 使用 %pip install 並指定存放庫 URL 做為套件名稱。 請參閱 範例。 |
將存放庫 URL 新增為基底環境 YAML 檔案的套件名稱。 請參閱 範例。 | 選取 [PyPI] 作為來源 ,並將存放庫 URL 指定為套件名稱。 | 將新的 pypi 物件新增至作業連結庫,並將存放庫 URL 指定為 package 欄位。 |
具有原始來源的私人 VCS | 使用 %pip install 並指定具有基本身份驗證的存放庫 URL 作為套件名稱。
秘密管理 可供使用。 請參閱 範例。 |
將具有基本身份驗證的存放庫新增為基底環境 YAML 檔案的套件名稱。 請參閱 範例。 | 不支援。 | 不支援。 |
檔案路徑 | 使用 %pip install 。 請參閱 範例。 |
將檔案路徑新增為套件名稱至基底環境 YAML 檔案。 請參閱 範例。 | 選取 [檔案路徑/ADLS ] 作為來源。 | 將新的 egg 或 whl 物件新增至作業連結庫,並將檔案路徑指定為 package 欄位。 |
Azure Data Lake Storage Gen2 | 與預先簽署的 URL 搭配使用 %pip install 。 不支援具有 Azure Data Lake Storage Gen2 通訊協議 abfss:// 的路徑。 |
將預先簽署的 URL 新增為套件名稱至基底環境 YAML 檔案。 不支援具有 Azure Data Lake Storage Gen2 通訊協議 abfss:// 的路徑。 |
選取 [檔案路徑/ADLS ] 作為來源。 | 將新的 egg 或 whl 物件新增至作業連結庫,並將 Azure Data Lake Storage Gen2 路徑指定為 package 字段。 |
Python 連結庫優先順序
您可能會遇到需要覆寫內建連結庫版本的情況,或有自定義連結庫與叢集上安裝的另一個連結庫發生名稱衝突的情況。 當您執行 import <library>
時,會匯入優先順序較高的連結庫。
重要
儲存在工作區檔案中的連結庫的優先順序不同,視它們新增至 Python sys.path
的方式而定。 Databricks Git 資料夾會將目前的工作目錄新增至所有其他連結庫之前的路徑,而 Git 資料夾外的筆記本會在安裝其他連結庫之後新增目前的工作目錄。 如果您手動將工作區目錄附加至您的路徑,這些目錄一律具有最低優先順序。
下列清單順序的優先順序從最高到最低。 在此清單中,較低的數位表示較高的優先順序。
- 目前工作目錄中的連結庫(僅限 Git 資料夾)。
- Git 資料夾根目錄中的連結庫(僅限 Git 資料夾)。
- 筆記本範圍的連結庫 (
%pip install
在筆記本中)。 - 叢集連結庫(使用UI、CLI或 API)。
- Databricks Runtime 中包含的連結庫。
- 使用 init 腳本安裝的連結庫,可能會根據內建連結庫的安裝方式,在內建連結庫之前或之後解決。 Databricks 不建議使用 init 腳本安裝連結庫。
- 目前工作目錄中的連結庫(不在 Git 資料夾中)。
- 附加至 的
sys.path
工作區檔案。