Bibliotheks-API 2.0

Mit der Bibliotheks-API können Sie Bibliotheken installieren und deinstallieren und den Status von Bibliotheken in einem Cluster abrufen.

Wichtig

Für den Zugriff auf Databricks-REST-APIs müssen Sie sich authentifizieren.

Alle Clusterstatus

Endpunkt HTTP-Methode
2.0/libraries/all-cluster-statuses GET

Abrufen des Status aller Bibliotheken in allen Clustern. Ein Status ist für alle Bibliotheken verfügbar, die auf Clustern über die API oder die Benutzeroberfläche der Bibliotheken installiert sind, sowie für Bibliotheken, die auf allen Clustern über die Benutzeroberfläche der Bibliotheken installiert werden sollen. Wenn eine Bibliothek so festgelegt wurde, dass sie in allen Clustern installiert wird, is_library_for_all_clusters ist , auch wenn die Bibliothek auch in diesem true bestimmten Cluster installiert wurde.

Beispiel

Anforderung

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

Ersetzen Sie durch <databricks-instance> den Namen der Azure Databricks <databricks-instance>z. adb-1234567890123456.7.azuredatabricks.net B. .

In diesem Beispiel werden eine NETRC-Datei und jqverwendet.

Antwort

{
  "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
        }
      ]
    }
  ]
}

Antwortstruktur

Feldname type Beschreibung
statuses Ein Array von ClusterLibraryStatuses Eine Liste der Clusterstatus.

Clusterstatus

Endpunkt HTTP-Methode
2.0/libraries/cluster-status GET

Abrufen des Status von Bibliotheken in einem Cluster. Ein Status ist für alle Bibliotheken verfügbar, die über die API oder die Bibliotheksbenutzeroberfläche im Cluster installiert sind, sowie für Bibliotheken, die auf allen Clustern über die Benutzeroberfläche der Bibliotheken installiert werden sollen. Wenn eine Bibliothek so festgelegt wurde, dass sie in allen Clustern installiert wird, is_library_for_all_clusters ist , auch wenn die Bibliothek auch im Cluster installiert true wurde.

Beispiel

Anforderung

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

Oder:

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

Ersetzen Sie:

  • <databricks-instance> mit dem namen der Azure Databricks <databricks-instance>z. adb-1234567890123456.7.azuredatabricks.net B. .
  • <cluster-id> mit der Azure Databricks Arbeitsbereichs-ID des Clusters, 1234-567890-example123 z. B. .

In diesem Beispiel werden eine NETRC-Datei und jqverwendet.

Antwort

{
  "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
    }
  ]
}

Anforderungsstruktur

Feldname type Beschreibung
cluster_id STRING Eindeutiger Bezeichner des Clusters, dessen Status abgerufen werden soll. Dieses Feld ist erforderlich.

Antwortstruktur

Feldname type Beschreibung
cluster_id STRING Eindeutiger Bezeichner für den Cluster.
library_statuses Ein Array von LibraryFullStatus Status aller Bibliotheken im Cluster.

Installieren

Endpunkt HTTP-Methode
2.0/libraries/install POST

Installieren sie Bibliotheken in einem Cluster. Die Installation ist asynchron. Sie wird im Hintergrund nach der Anforderung abgeschlossen.

Wichtig

Dieser Aufruf schlägt fehl, wenn der Cluster beendet wird.

Das Installieren einer Radbibliothek in einem Cluster entspricht dem Ausführen des pip Befehls für die Wheel-Datei direkt auf Treiber und Executors. Alle in der Bibliotheksdatei angegebenen Abhängigkeiten setup.py werden installiert, und dies erfordert, dass der Bibliotheksname der setup.pyentspricht.

Die Installation auf den Executors erfolgt nur, wenn eine neue Aufgabe gestartet wird. Ab Databricks Runtime 7.1 ist die Installationsreihenfolge der Bibliotheken nicht deterministisch. Für Wheel-Bibliotheken können Sie eine deterministische Installationsreihenfolge sicherstellen, indem Sie eine ZIP-Datei mit dem Suffix .wheelhouse.zip erstellen, die alle Wheel-Dateien enthält.

Beispiel

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

Ersetzen Sie:

  • <databricks-instance> mit dem namen der Azure Databricks <databricks-instance>z. adb-1234567890123456.7.azuredatabricks.net B. .
  • Der Inhalt von install-libraries.json mit Feldern, die für Ihre Lösung geeignet sind.

In diesem Beispiel wird eine NETRC-Datei verwendet.

Anforderungsstruktur

Feldname type Beschreibung
cluster_id STRING Eindeutiger Bezeichner für den Cluster, auf dem diese Bibliotheken installiert werden sollen. Dieses Feld ist erforderlich.
libraries Ein Array von Library Die zu installierenden Bibliotheken.

Deinstallieren

Endpunkt HTTP-Methode
2.0/libraries/uninstall POST

Legen Sie bibliotheken fest, die in einem Cluster deinstalliert werden sollen. Die Bibliotheken werden erst deinstalliert, wenn der Cluster neu gestartet wurde. Das Deinstallieren von Bibliotheken, die nicht im Cluster installiert sind, hat keine Auswirkungen, ist aber kein Fehler.

Beispiel

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

Ersetzen Sie:

  • <databricks-instance> mit dem namen der Azure Databricks <databricks-instance>z. adb-1234567890123456.7.azuredatabricks.net B. .
  • Der Inhalt von uninstall-libraries.json mit Feldern, die für Ihre Lösung geeignet sind.

In diesem Beispiel wird eine NETRC-Datei verwendet.

Anforderungsstruktur

Feldname type Beschreibung
cluster_id STRING Eindeutiger Bezeichner für den Cluster, in dem diese Bibliotheken deinstalliert werden sollen. Dieses Feld ist erforderlich.
libraries Ein Array von Bibliothek Die zu deinstallierenden Bibliotheken.

Datenstrukturen

In diesem Abschnitt

ClusterLibraryStatuses

Feldname type Beschreibung
cluster_id STRING Eindeutiger Bezeichner für den Cluster.
library_statuses Ein Array von LibraryFullStatus Status aller Bibliotheken im Cluster.

Bibliothek

Feldname type Beschreibung
jar OR au OR whl OR pypi OR maven OR cran STRING OR STRING OR STRING OR STRING OR STRING OR STRING Bei JAR, URI der zu installierenden JAR-Datei. DBFS- und abfss ADLS-URIs () werden unterstützt. Beispiel: { "jar": "dbfs:/mnt/databricks/library.jar" } oder .
{ "jar": "abfss://my-bucket/library.jar" }. Wenn ADLS verwendet wird, stellen Sie sicher, dass der Cluster über Lesezugriff auf die Bibliothek verfügt.

Bei "au" der URI des zu installierenden Eis. DBFS- und ADLS-URIs werden unterstützt. Beispiel: { "egg": "dbfs:/my/egg" } oder .
{ "egg": "abfss://my-bucket/egg" }.

Bei Whl, URI des zu installierenden Rads oder gezippten Rads. DBFS- und ADLS-URIs werden unterstützt. Beispiel: { "whl": "dbfs:/my/whl" } oder .
{ "whl": "abfss://my-bucket/whl" }. Wenn ADLS verwendet wird, stellen Sie sicher, dass der Cluster über Lesezugriff auf die Bibliothek verfügt. Außerdem muss der Name der Wheeldatei die richtige Konvention verwenden. Wenn ZIP-Rade installiert werden sollen, sollte das Dateinamensuffix .wheelhouse.zip sein.

Bei pypi die Angabe einer zu installierenden PyPI-Bibliothek. Die Angabe des repo Felds ist optional, und wenn nicht angegeben, wird der pip-Standardindex verwendet. Beispiel:
{ "package": "simplejson", "repo": "https://my-repo.com" }

Bei Maven die Angabe einer zu installierenden Maven-Bibliothek. Beispiel:
{ "coordinates": "org.jsoup:jsoup:1.7.2" }

Falls cran, Spezifikation einer cran-Bibliothek, die installiert werden soll.

LibraryFullStatus

Der Status der Bibliothek in einem bestimmten Cluster.

Feldname type Beschreibung
Bibliothek Bibliothek Eindeutiger Bezeichner für die Bibliothek.
status LibraryInstallStatus Status der Installation der Bibliothek im Cluster.
Cloud an das Gerät Ein Array von STRING Alle Informationen und Warnmeldungen, die bisher für diese Bibliothek aufgetreten sind.
is_library_for_all_clusters BOOL Gibt an, ob die Bibliothek über die Benutzeroberfläche der Bibliotheken auf allen Clustern installiert werden soll.

MavenLibrary

Feldname type Beschreibung
Koordinaten STRING Maven-Koordinaten im Gradle-Stil. Beispiel: org.jsoup:jsoup:1.7.2. Dieses Feld ist erforderlich.
Repo STRING Maven-Repository zum Installieren des Maven-Pakets. Wenn sie nicht angegeben wird, werden sowohl das zentrale Maven-Repository als auch die Spark-Pakete durchsucht.
Ausschlüsse Ein Array von STRING Liste der auszuschließenden Abhängigkeiten. Beispiel: ["slf4j:slf4j", "*:hadoop-client"].

Maven-Abhängigkeitsausschlüsse: https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html .

PythonPyPiLibrary

Feldname type Beschreibung
Paket STRING Der Name des zu installierenden PyPI-Pakets. Eine optionale genaue Versionsangabe wird ebenfalls unterstützt. Beispiele:: simplejson und simplejson==3.8.0. Dieses Feld ist erforderlich.
Repo STRING Das Repository, in dem sich das Paket befinden kann. Wenn kein Wert angegeben wird, wird der pip-Standardindex verwendet.

RCranLibrary

Feldname type Beschreibung
Paket STRING Der Name des zu installierenden CRAN-Pakets. Dieses Feld ist erforderlich.
Repo STRING Das Repository, in dem sich das Paket befinden kann. Wenn kein Wert angegeben wird, wird das CRAN-Standard-Repository verwendet.

LibraryInstallStatus

Der Status einer Bibliothek in einem bestimmten Cluster.

Status Beschreibung
PENDING (AUSSTEHEND) Es wurde noch keine Aktion zum Installieren der Bibliothek ergriffen. Dieser Zustand sollte sehr kurzlebig sein.
RESOLVING Metadaten, die zum Installieren der Bibliothek erforderlich sind, werden aus dem bereitgestellten Repository abgerufen.

Für die Jar-, Jar- und Whl-Bibliotheken ist dieser Schritt kein Op.
INSTALLATION Die Bibliothek wird aktiv installiert, entweder durch Hinzufügen von Ressourcen zu Spark oder Ausführen von Systembefehlen innerhalb der Spark-Knoten.
INSTALLIERT Die Bibliothek wurde erfolgreich installiert.
ÜBERSPRUNGEN Die Installation auf einem Databricks Runtime 7.0 oder höher wurde aufgrund einer Inkompatibilität der Scala-Version übersprungen.
FAILED Fehler bei einigen Installationsschritten. Weitere Informationen finden Sie im Feld meldungen.
UNINSTALL_ON_RESTART Die Bibliothek wurde zum Entfernen markiert. Bibliotheken können nur entfernt werden, wenn Cluster neu gestartet werden. Bibliotheken, die diesen Zustand erhalten, bleiben also erhalten, bis der Cluster neu gestartet wird.