程式庫 API 2.0

程式庫 API 可讓您安裝和卸載程式庫,並取得叢集上程式庫的狀態。

重要

若要存取 Databricks REST API,您必須驗證

所有叢集狀態

端點 HTTP 方法
2.0/libraries/all-cluster-statuses GET

取得所有叢集上所有程式庫的狀態。 透過 API 或程式庫 UI 安裝于叢集上的所有程式庫,以及透過程式庫 UI 設定為安裝在所有叢集上的程式庫,都會有狀態。 如果程式庫已設定為安裝在所有叢集上, is_library_for_all_clusterstrue 則即使程式庫也安裝在這個特定叢集上也一樣。

範例

要求

curl --netrc --request GET \
https://<databricks-instance>/api/2.0/libraries/all-cluster-statuses \
| jq .

以 Azure Databricks工作區實例名稱取代 <databricks-instance> ,例如 adb-1234567890123456.7.azuredatabricks.net

此範例使用 .netrc 檔案和 jq

回應

{
  "statuses": [
    {
      "cluster_id": "11203-my-cluster",
      "library_statuses": [
        {
          "library": {
            "jar": "dbfs:/mnt/libraries/library.jar"
          },
          "status": "INSTALLING",
          "messages": [],
          "is_library_for_all_clusters": false
        }
      ]
    },
    {
      "cluster_id": "20131-my-other-cluster",
      "library_statuses": [
        {
          "library": {
            "egg": "dbfs:/mnt/libraries/library.egg"
          },
          "status": "ERROR",
          "messages": ["Could not download library"],
          "is_library_for_all_clusters": false
        }
      ]
    }
  ]
}

回應結構

欄位名稱 類型 Description
狀態 ClusterLibraryStatuses 的陣列 叢集狀態的清單。

叢集狀態

端點 HTTP 方法
2.0/libraries/cluster-status GET

取得叢集上程式庫的狀態。 狀態將會透過 API 或程式庫 UI 安裝于叢集上的所有程式庫,以及透過程式庫 UI 設定為安裝在所有叢集上的程式庫。 如果程式庫已設定為安裝在所有叢集上, is_library_for_all_clusterstrue 則 即使程式庫也安裝在叢集上亦然。

範例

要求

curl --netrc --request GET \
'https://<databricks-instance>/api/2.0/libraries/cluster-status?cluster_id=<cluster-id>' \
| jq .

或:

curl --netrc --get \
https://<databricks-instance>/api/2.0/libraries/cluster-status \
--data cluster_id=<cluster-id> \
| jq .

將:

  • <databricks-instance> 使用 Azure Databricks 工作區實例名稱,例如 adb-1234567890123456.7.azuredatabricks.net
  • <cluster-id> 具有叢集的 Azure Databricks 工作區識別碼,例如 1234-567890-example123

此範例使用 .netrc 檔案和 jq

回應

{
  "cluster_id": "11203-my-cluster",
  "library_statuses": [
    {
      "library": {
        "jar": "dbfs:/mnt/libraries/library.jar"
      },
      "status": "INSTALLED",
      "messages": [],
      "is_library_for_all_clusters": false
    },
    {
      "library": {
        "pypi": {
          "package": "beautifulsoup4"
        },
      },
      "status": "INSTALLING",
      "messages": ["Successfully resolved package from PyPI"],
      "is_library_for_all_clusters": false
    },
    {
      "library": {
        "cran": {
          "package": "ada",
          "repo": "https://cran.us.r-project.org"
        },
      },
      "status": "FAILED",
      "messages": ["R package installation is not supported on this spark version.\nPlease upgrade to Runtime 3.2 or higher"],
      "is_library_for_all_clusters": false
    }
  ]
}

要求結構

欄位名稱 類型 Description
cluster_id STRING 應擷取其狀態之叢集的唯一識別碼。 此為必要欄位。

回應結構

欄位名稱 類型 Description
cluster_id STRING 叢集的唯一識別碼。
library_statuses LibraryFullStatus的陣列 叢集上所有程式庫的狀態。

安裝

端點 HTTP 方法
2.0/libraries/install POST

在叢集上安裝程式庫。 安裝是非同步 - 它會在要求之後于背景完成。

重要

如果叢集終止,此呼叫將會失敗。

在叢集上安裝滾輪程式庫就像直接在驅動程式和執行程式上對滾輪檔案執行 pip 命令一樣。 會安裝程式庫檔案中指定的所有相依性,這需要程式庫 setup.py 名稱才能滿足 轉輪檔案名慣例

只有在啟動新工作時,才會在執行程式上安裝。 使用 Databricks Runtime 7.1 和以下版本時,程式庫的安裝順序不具決定性。 對於滾輪程式庫,您可以建立包含所有轉輪檔案尾碼 .wheelhouse.zip 的 zip 檔案,以確保確定安裝順序。

範例

curl --netrc --request POST \
https://<databricks-instance>/api/2.0/libraries/install \
--data @install-libraries.json

install-libraries.json:

{
  "cluster_id": "10201-my-cluster",
  "libraries": [
    {
      "jar": "dbfs:/mnt/libraries/library.jar"
    },
    {
      "egg": "dbfs:/mnt/libraries/library.egg"
    },
    {
      "whl": "dbfs:/mnt/libraries/mlflow-0.0.1.dev0-py2-none-any.whl"
    },
    {
      "whl": "dbfs:/mnt/libraries/wheel-libraries.wheelhouse.zip"
    },
    {
      "maven": {
        "coordinates": "org.jsoup:jsoup:1.7.2",
        "exclusions": ["slf4j:slf4j"]
      }
    },
    {
      "pypi": {
        "package": "simplejson",
        "repo": "https://my-pypi-mirror.com"
      }
    },
    {
      "cran": {
        "package": "ada",
        "repo": "https://cran.us.r-project.org"
      }
    }
  ]
}

將:

  • <databricks-instance> 使用 Azure Databricks 工作區實例名稱,例如 adb-1234567890123456.7.azuredatabricks.net
  • 的內容 install-libraries.json ,包含適合您解決方案的欄位。

此範例使用 .netrc 檔案。

要求結構

欄位名稱 類型 Description
cluster_id STRING 要安裝這些程式庫之叢集的唯一識別碼。 此為必要欄位。
程式庫 連結的陣列 要安裝的程式庫。

卸載

端點 HTTP 方法
2.0/libraries/uninstall POST

將程式庫設定為在叢集上卸載。 在重新開機叢集之前,不會卸載程式庫。 卸載未安裝在叢集上的程式庫沒有任何影響,但不是錯誤。

範例

curl --netrc --request POST \
https://<databricks-instance>/api/2.0/libraries/uninstall \
--data @uninstall-libraries.json

uninstall-libraries.json:

{
  "cluster_id": "10201-my-cluster",
  "libraries": [
    {
      "jar": "dbfs:/mnt/libraries/library.jar"
    },
    {
      "cran": "ada"
    }
  ]
}

將:

  • <databricks-instance> 使用 Azure Databricks 工作區實例名稱,例如 adb-1234567890123456.7.azuredatabricks.net
  • 的內容 uninstall-libraries.json ,包含適合您解決方案的欄位。

此範例使用 .netrc 檔案。

要求結構

欄位名稱 類型 Description
cluster_id STRING 要卸載這些程式庫之叢集的唯一識別碼。 此為必要欄位。
程式庫 連結的陣列 要卸載的程式庫。

資料結構

本節內容:

ClusterLibraryStatuses

欄位名稱 類型 Description
cluster_id STRING 叢集的唯一識別碼。
library_statuses LibraryFullStatus的陣列 叢集上所有程式庫的狀態。

圖書館

欄位名稱 類型 Description
jar OR egg OR whl OR pypi OR maven OR cran STRINGSTRING 或 或 STRINGPythonPyPiLibraryMavenLibraryRCranLibrary 如果為 jar,則為要安裝的 JAR URI。 支援 DBFS 和 ADLS (abfss) URI。 例如: { "jar": "dbfs:/mnt/databricks/library.jar" }
{ "jar": "abfss://my-bucket/library.jar" }. 如果使用 ADLS,請確定叢集具有程式庫的讀取權限。

如果為果,則為要安裝的果 URI。 支援 DBFS 和 ADLS URI。 例如: { "egg": "dbfs:/my/egg" }
{ "egg": "abfss://my-bucket/egg" }.

如果為 whl,則為要安裝的滾輪或壓縮滾輪的 URI。 支援 DBFS 和 ADLS URI。 例如: { "whl": "dbfs:/my/whl" }
{ "whl": "abfss://my-bucket/whl" }. 如果使用 ADLS,請確定叢集具有程式庫的讀取權限。 此外,滾輪檔案名也需要使用 正確的慣例。 如果要安裝壓縮的滾輪,檔案名尾碼應該是 .wheelhouse.zip

如果為 pypi,則為要安裝的 PyPI 程式庫規格。 指定 repo 欄位是選擇性的,如果未指定,則會使用預設 pip 索引。 例如:
{ "package": "simplejson", "repo": "https://my-repo.com" }

如果為 maven,請安裝 Maven 程式庫的規格。 例如:
{ "coordinates": "org.jsoup:jsoup:1.7.2" }

如果為 cran,則為要安裝的 CRAN 程式庫規格。

LibraryFullStatus

特定叢集上程式庫的狀態。

欄位名稱 類型 Description
圖書館 程式庫 程式庫的唯一識別碼。
status LibraryInstallStatus 在叢集上安裝程式庫的狀態。
messages STRING 的陣列。 到目前為止,此程式庫發生的所有資訊和警告訊息。
is_library_for_all_clusters BOOL 程式庫是否已設定為透過程式庫 UI 安裝在所有叢集上。

MavenLibrary

欄位名稱 類型 Description
座標 STRING Gradle 樣式的 Maven 座標。 例如:org.jsoup:jsoup:1.7.2。 此為必要欄位。
repo STRING 要從中安裝 Maven 套件的 Maven 存放庫。 如果省略,則會搜尋 Maven 中央存放庫和 Spark 套件。
排除項 STRING 的陣列。 要排除的相依性清單。 例如:["slf4j:slf4j", "*:hadoop-client"]

Maven 相依性排除專案: https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

PythonPyPiLibrary

欄位名稱 類型 說明
套件 STRING 要安裝的 PyPI 套件名稱。 也支援選擇性的確切版本規格。 範例:simplejsonsimplejson==3.8.0。 此為必要欄位。
repo STRING 可以找到套件的存放庫。 如果未指定,則會使用預設 pip 索引。

RCranLibrary

欄位名稱 類型 說明
套件 STRING 要安裝的 CRAN 套件名稱。 此為必要欄位。
repo STRING 可以找到套件的存放庫。 如果未指定,則會使用預設 CRAN 存放庫。

LibraryInstallStatus

特定叢集上程式庫的狀態。

狀態 描述
PENDING 尚未採取任何動作來安裝程式庫。 此狀態應非常短。
RESOLVING 安裝程式庫所需的中繼資料是從提供的存放庫擷取。

對於 Jar、Egg 和 Whl 程式庫,此步驟是無作業。
安裝 程式庫正在主動安裝,方法是將資源新增至 Spark,或在 Spark 節點內執行系統命令。
安裝 程式庫已成功安裝。
SKIPPED Databricks Runtime 7.0 或更新版本的叢集因為 Scala 版本不相容而略過安裝。
FAILED 安裝中的某些步驟失敗。 您可以在訊息欄位中找到詳細資訊。
UNINSTALL_ON_RESTART 程式庫已標示為移除。 只有在重新開機叢集時,才能移除程式庫,因此進入此狀態的程式庫會維持在叢集重新開機之前。