Bibliotheken-API 2.0

Met de Bibliotheken-API kunt u bibliotheken installeren en verwijderen en de status van bibliotheken in een cluster ophalen.

Belangrijk

U moet u verifiëren voor toegang tot Databricks-REST API's.

Alle clusterstatussen

Eindpunt HTTP-methode
2.0/libraries/all-cluster-statuses GET

De status van alle bibliotheken op alle clusters ophalen. Er is een status beschikbaar voor alle bibliotheken die zijn geïnstalleerd op clusters via de API of de gebruikersinterface van bibliotheken, evenals bibliotheken die zijn ingesteld op alle clusters via de gebruikersinterface van bibliotheken. Als een bibliotheek is ingesteld om te worden geïnstalleerd op alle clusters, wordt trueditis_library_for_all_clusters, zelfs als de bibliotheek ook op dit specifieke cluster is geïnstalleerd.

Voorbeeld

Aanvraag

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

Vervang <databricks-instance> bijvoorbeeld door de naamadb-1234567890123456.7.azuredatabricks.net van het exemplaar van de Azure Databricks-werkruimte.

In dit voorbeeld wordt een .netrc-bestand en jq gebruikt.

Antwoord

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

Antwoordstructuur

Veldnaam Type Description
Statussen Een matrix van ClusterLibraryStatuses Een lijst met clusterstatussen.

Clusterstatus

Eindpunt HTTP-methode
2.0/libraries/cluster-status GET

De status van bibliotheken in een cluster ophalen. Er is een status beschikbaar voor alle bibliotheken die op het cluster zijn geïnstalleerd via de API of de gebruikersinterface van bibliotheken, evenals bibliotheken die zijn ingesteld op alle clusters via de gebruikersinterface van bibliotheken. Als een bibliotheek is ingesteld om te worden geïnstalleerd op alle clusters, wordt trueditis_library_for_all_clusters, zelfs als de bibliotheek ook op het cluster is geïnstalleerd.

Voorbeeld

Aanvraag

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

Of:

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

Vervang:

  • <databricks-instance>met bijvoorbeeld de naam adb-1234567890123456.7.azuredatabricks.netvan het Azure Databricks-werkruimte-exemplaar.
  • <cluster-id> met bijvoorbeeld de Azure Databricks-werkruimte-id van het cluster 1234-567890-example123.

In dit voorbeeld wordt een .netrc-bestand en jq gebruikt.

Antwoord

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

Aanvraagstructuur

Veldnaam Type Description
cluster_id STRING Unieke id van het cluster waarvan de status moet worden opgehaald. Dit veld is vereist.

Antwoordstructuur

Veldnaam Type Description
cluster_id STRING Unieke id voor het cluster.
library_statuses Een matrix van LibraryFullStatus Status van alle bibliotheken in het cluster.

Installeren

Eindpunt HTTP-methode
2.0/libraries/install POST

Installeer bibliotheken in een cluster. De installatie is asynchroon. Deze wordt na de aanvraag op de achtergrond voltooid.

Belangrijk

Deze aanroep mislukt als het cluster wordt beëindigd.

Het installeren van een wielbibliotheek op een cluster is net als het uitvoeren van de pip opdracht op het wielbestand rechtstreeks op het stuurprogramma en uitvoerders. Alle afhankelijkheden die in het bibliotheekbestand setup.py zijn opgegeven, worden geïnstalleerd en hiervoor is de bibliotheeknaam vereist om te voldoen aan de naamconventie van het wielbestand.

De installatie op de uitvoerders vindt alleen plaats wanneer een nieuwe taak wordt gestart. Met Databricks Runtime 7.1 en lager is de installatievolgorde van bibliotheken niet-deterministisch. Voor wielbibliotheken kunt u een deterministische installatievolgorde garanderen door een zip-bestand met achtervoegsel .wheelhouse.zip te maken dat alle wielbestanden bevat.

Voorbeeld

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

Vervang:

  • <databricks-instance>met bijvoorbeeld de naam adb-1234567890123456.7.azuredatabricks.netvan het Azure Databricks-werkruimte-exemplaar.
  • De inhoud van install-libraries.json velden die geschikt zijn voor uw oplossing.

In dit voorbeeld wordt een .netrc-bestand gebruikt .

Aanvraagstructuur

Veldnaam Type Description
cluster_id STRING Unieke id voor het cluster waarop deze bibliotheken moeten worden geïnstalleerd. Dit veld is vereist.
bibliotheken Een matrix van bibliotheek De bibliotheken die moeten worden geïnstalleerd.

Verwijderen

Eindpunt HTTP-methode
2.0/libraries/uninstall POST

Stel bibliotheken in die moeten worden verwijderd in een cluster. De bibliotheken worden pas verwijderd nadat het cluster opnieuw is opgestart. Het verwijderen van bibliotheken die niet op het cluster zijn geïnstalleerd, heeft geen invloed, maar is geen fout.

Voorbeeld

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

Vervang:

  • <databricks-instance>met bijvoorbeeld de naam adb-1234567890123456.7.azuredatabricks.netvan het Azure Databricks-werkruimte-exemplaar.
  • De inhoud van uninstall-libraries.json velden die geschikt zijn voor uw oplossing.

In dit voorbeeld wordt een .netrc-bestand gebruikt .

Aanvraagstructuur

Veldnaam Type Description
cluster_id STRING Unieke id voor het cluster waarop deze bibliotheken moeten worden verwijderd. Dit veld is vereist.
bibliotheken Een matrix van bibliotheek De bibliotheken die moeten worden verwijderd.

Gegevensstructuren

In deze sectie:

ClusterLibraryStatuses

Veldnaam Type Description
cluster_id STRING Unieke id voor het cluster.
library_statuses Een matrix van LibraryFullStatus Status van alle bibliotheken in het cluster.

Bibliotheek

Veldnaam Type Description
pot OF ei OF whl OR pypi OF maven OR cran STRING OF STRING OF OF STRINGPythonPyPiLibrary OF MavenLibrary OF RCranLibrary Als jar, URI van de JAR die moet worden geïnstalleerd. DBFS- en ADLS-URI's (abfssADLS) worden ondersteund. Bijvoorbeeld: { "jar": "dbfs:/mnt/databricks/library.jar" } of
{ "jar": "abfss://my-bucket/library.jar" }. Als ADLS wordt gebruikt, controleert u of het cluster leestoegang heeft tot de bibliotheek.

Als ei, URI van het ei dat moet worden geïnstalleerd. DBFS- en ADLS-URI's worden ondersteund. Bijvoorbeeld: { "egg": "dbfs:/my/egg" } of
{ "egg": "abfss://my-bucket/egg" }.

Als whl, URI van het wiel of ritswiel te installeren. DBFS- en ADLS-URI's worden ondersteund. Bijvoorbeeld: { "whl": "dbfs:/my/whl" } of
{ "whl": "abfss://my-bucket/whl" }. Als ADLS wordt gebruikt, controleert u of het cluster leestoegang heeft tot de bibliotheek. Ook moet de bestandsnaam van het wiel de juiste conventie gebruiken. Als gezipte wielen moeten worden geïnstalleerd, moet het achtervoegsel van de bestandsnaam zijn .wheelhouse.zip.

Als pypi, specificatie van een PyPI-bibliotheek die moet worden geïnstalleerd. Het opgeven van het repo veld is optioneel en indien niet opgegeven, wordt de standaard pip-index gebruikt. Bijvoorbeeld:
{ "package": "simplejson", "repo": "https://my-repo.com" }

Als maven, specificatie van een Maven-bibliotheek die moet worden geïnstalleerd. Bijvoorbeeld:
{ "coordinates": "org.jsoup:jsoup:1.7.2" }

Als cran, specificatie van een CRAN-bibliotheek die moet worden geïnstalleerd.

LibraryFullStatus

De status van de bibliotheek op een specifiek cluster.

Veldnaam Type Description
bibliotheek Bibliotheek Unieke id voor de bibliotheek.
status LibraryInstallStatus Status van het installeren van de bibliotheek op het cluster.
berichten Een matrix van STRING Alle informatie- en waarschuwingsberichten die tot nu toe zijn opgetreden voor deze bibliotheek.
is_library_for_all_clusters BOOL Of de bibliotheek is ingesteld op installatie op alle clusters via de gebruikersinterface van bibliotheken.

MavenLibrary

Veldnaam Type Description
coördinaten STRING Maven-coördinaten in Gradle-stijl. Bijvoorbeeld: org.jsoup:jsoup:1.7.2. Dit veld is vereist.
Repo STRING Maven-opslagplaats voor het installeren van het Maven-pakket. Als u dit weglaat, worden zowel de Centrale Maven-opslagplaats als spark-pakketten doorzocht.
Uitsluitingen Een matrix van STRING Lijst met afhankelijkheiden die moeten worden uitgesloten. Bijvoorbeeld: ["slf4j:slf4j", "*:hadoop-client"].

Uitsluitingen van Maven-afhankelijkheid: https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html.

PythonPyPiLibrary

Veldnaam Type Description
pakket STRING De naam van het PyPI-pakket dat moet worden geïnstalleerd. Er wordt ook een optionele exacte versiespecificatie ondersteund. Voorbeelden: simplejson en simplejson==3.8.0. Dit veld is vereist.
Repo STRING De opslagplaats waar het pakket kan worden gevonden. Als dit niet is opgegeven, wordt de standaard pip-index gebruikt.

RCranLibrary

Veldnaam Type Description
pakket STRING De naam van het CRAN-pakket dat moet worden geïnstalleerd. Dit veld is vereist.
Repo STRING De opslagplaats waar het pakket kan worden gevonden. Als dit niet is opgegeven, wordt de standaard CRAN-opslagplaats gebruikt.

LibraryInstallStatus

De status van een bibliotheek op een specifiek cluster.

Status Beschrijving
PENDING Er is nog geen actie ondernomen om de bibliotheek te installeren. Deze toestand moet zeer kort duren.
OPLOSSEN Metagegevens die nodig zijn om de bibliotheek te installeren, worden opgehaald uit de opgegeven opslagplaats.

Voor Jar-, Egg- en Whl-bibliotheken is deze stap een no-op.
INSTALLEREN De bibliotheek wordt actief geïnstalleerd door resources toe te voegen aan Spark of systeemopdrachten uit te voeren in de Spark-knooppunten.
GEÏNSTALLEERD De bibliotheek is geïnstalleerd.
OVERGESLAGEN Installatie op een Databricks Runtime 7.0- of hoger-cluster is overgeslagen vanwege incompatibiliteit van scala-versies.
MISLUKT Een stap in de installatie is mislukt. Meer informatie vindt u in het berichtenveld.
UNINSTALL_ON_RESTART De bibliotheek is gemarkeerd voor verwijdering. Bibliotheken kunnen alleen worden verwijderd wanneer clusters opnieuw worden opgestart, zodat bibliotheken die deze status invoeren, behouden blijven totdat het cluster opnieuw wordt opgestart.