API librerie 2.0

L'API Librerie consente di installare e disinstallare le librerie e ottenere lo stato delle librerie in un cluster.

Importante

Per accedere alle API REST di Databricks, è necessario eseguire l'autenticazione.

Tutti gli stati del cluster

Endpoint Metodo HTTP
2.0/libraries/all-cluster-statuses GET

Ottenere lo stato di tutte le librerie in tutti i cluster. Lo stato sarà disponibile per tutte le librerie installate nei cluster tramite l'API o l'interfaccia utente delle librerie, nonché le librerie impostate per l'installazione in tutti i cluster tramite l'interfaccia utente delle librerie. Se è stata impostata una libreria da installare in tutti i cluster, is_library_for_all_clusters sarà true, anche se la libreria è stata installata anche in questo cluster specifico.

Esempio

Richiesta

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

Sostituire <databricks-instance> con il nome dell'istanza dell'area di lavoro di Azure Databricks, ad esempio adb-1234567890123456.7.azuredatabricks.net.

In questo esempio viene usato un file .netrc e jq.

Risposta

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

Struttura di risposta

Nome campo Tipo Descrizione
statuses Matrice di ClusterLibraryStatuses Elenco degli stati del cluster.

Stato del cluster

Endpoint Metodo HTTP
2.0/libraries/cluster-status GET

Ottenere lo stato delle librerie in un cluster. Lo stato sarà disponibile per tutte le librerie installate nel cluster tramite l'API o l'interfaccia utente delle librerie, nonché le librerie impostate per l'installazione in tutti i cluster tramite l'interfaccia utente delle librerie. Se è stata impostata una libreria da installare in tutti i cluster, is_library_for_all_clusters sarà true, anche se la libreria è stata installata anche nel cluster.

Esempio

Richiesta

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

Oppure:

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

Sostituire:

  • <databricks-instance> con il nome dell'istanza dell'area di lavoro di Azure Databricks, ad esempio adb-1234567890123456.7.azuredatabricks.net.
  • <cluster-id> con l'ID dell'area di lavoro di Azure Databricks del cluster, ad esempio 1234-567890-example123.

In questo esempio viene usato un file .netrc e jq.

Risposta

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

Struttura della richiesta

Nome campo Tipo Descrizione
cluster_id STRING Identificatore univoco del cluster il cui stato deve essere recuperato. Questo campo è obbligatorio.

Struttura di risposta

Nome campo Tipo Descrizione
cluster_id STRING Identificatore univoco per il cluster.
library_statuses Matrice di LibraryFullStatus Stato di tutte le librerie nel cluster.

Installare

Endpoint Metodo HTTP
2.0/libraries/install POST

Installare le librerie in un cluster. L'installazione è asincrona: viene completata in background dopo la richiesta.

Importante

Questa chiamata avrà esito negativo se il cluster viene terminato.

L'installazione di una libreria ruota in un cluster è simile all'esecuzione del pip comando sul file della ruota direttamente sul driver e sugli executori. Tutte le dipendenze specificate nel file di libreria vengono installate e questo richiede che il nome della libreria setup.py soddisfi la convenzione nome file a rotelle.

L'installazione degli executori avviene solo quando viene avviata una nuova attività. Con Databricks Runtime 7.1 e versioni successive, l'ordine di installazione delle librerie non è deterministico. Per le librerie ruota, è possibile garantire un ordine di installazione deterministico creando un file zip con suffisso .wheelhouse.zip che include tutti i file della ruota.

Esempio

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

Sostituire:

  • <databricks-instance> con il nome dell'istanza dell'area di lavoro di Azure Databricks, ad esempio adb-1234567890123456.7.azuredatabricks.net.
  • Contenuto di install-libraries.json con campi appropriati per la soluzione.

In questo esempio viene usato un file .netrc .

Struttura della richiesta

Nome campo Tipo Descrizione
cluster_id STRING Identificatore univoco per il cluster in cui installare queste librerie. Questo campo è obbligatorio.
libraries Matrice di libreria Librerie da installare.

Disinstallare

Endpoint Metodo HTTP
2.0/libraries/uninstall POST

Impostare le librerie da disinstallare in un cluster. Le librerie non vengono disinstallate finché il cluster non viene riavviato. La disinstallazione delle librerie non installate nel cluster non ha alcun impatto, ma non è un errore.

Esempio

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

Sostituire:

  • <databricks-instance> con il nome dell'istanza dell'area di lavoro di Azure Databricks, ad esempio adb-1234567890123456.7.azuredatabricks.net.
  • Contenuto di uninstall-libraries.json con campi appropriati per la soluzione.

In questo esempio viene usato un file .netrc .

Struttura della richiesta

Nome campo Tipo Descrizione
cluster_id STRING Identificatore univoco per il cluster in cui disinstallare queste librerie. Questo campo è obbligatorio.
libraries Matrice di libreria Librerie da disinstallare.

Strutture di dati

Contenuto della sezione:

ClusterLibraryStatuses

Nome campo Tipo Descrizione
cluster_id STRING Identificatore univoco per il cluster.
library_statuses Matrice di LibraryFullStatus Stato di tutte le librerie nel cluster.

Libreria

Nome campo Tipo Descrizione
jar OR egg OR whl OR pypi OR maven OR cran STRING OR STRING O STRINGPythonPyPiLibrary O MavenLibrary O RCranLibrary Se jar, URI del file JAR da installare. Sono supportati GLI URI DBFS e ADLS (abfss). Ad esempio: { "jar": "dbfs:/mnt/databricks/library.jar" } o
{ "jar": "abfss://my-bucket/library.jar" }. Se si usa ADLS, assicurarsi che il cluster abbia accesso in lettura alla libreria.

Se uovo, URI dell'uovo da installare. Sono supportati GLI URI DBFS e ADLS. Ad esempio: { "egg": "dbfs:/my/egg" } o
{ "egg": "abfss://my-bucket/egg" }.

Se whl, l'URI della ruota o delle ruote compresse da installare. Sono supportati GLI URI DBFS e ADLS. Ad esempio: { "whl": "dbfs:/my/whl" } o
{ "whl": "abfss://my-bucket/whl" }. Se si usa ADLS, assicurarsi che il cluster abbia accesso in lettura alla libreria. Inoltre, il nome del file wheel deve usare la convenzione corretta. Se devono essere installate ruote compresse, il suffisso del nome file deve essere .wheelhouse.zip.

Se pypi, specifica di una libreria PyPI da installare. Specificare il repo campo è facoltativo e, se non specificato, viene usato l'indice pip predefinito. Ad esempio:
{ "package": "simplejson", "repo": "https://my-repo.com" }

Se maven, specifica di una libreria Maven da installare. Ad esempio:
{ "coordinates": "org.jsoup:jsoup:1.7.2" }

Se cran, specifica di una libreria CRAN da installare.

LibraryFullStatus

Stato della libreria in un cluster specifico.

Nome campo Tipo Descrizione
library Libreria Identificatore univoco per la libreria.
status LibraryInstallStatus Stato dell'installazione della libreria nel cluster.
del cloud al dispositivo Matrice di STRING. Tutte le informazioni e i messaggi di avviso che si sono verificati finora per questa raccolta.
is_library_for_all_clusters BOOL Indica se la libreria è stata impostata per l'installazione in tutti i cluster tramite l'interfaccia utente delle librerie.

MavenLibrary

Nome campo Tipo Descrizione
Coordinate STRING Coordinate Maven in stile Gradle. Ad esempio: org.jsoup:jsoup:1.7.2. Questo campo è obbligatorio.
repo STRING Repository Maven da cui installare il pacchetto Maven. Se omesso, vengono eseguite ricerche sia nel repository centrale maven che nei pacchetti Spark.
esclusioni Matrice di STRING. Elenco di dipendenze da escludere. Ad esempio: ["slf4j:slf4j", "*:hadoop-client"].

Esclusioni di dipendenze Maven: https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html.

PythonPyPiLibrary

Nome campo Tipo Description
Pacchetto STRING Nome del pacchetto PyPI da installare. È supportata anche una specifica di versione esatta facoltativa. Esempi: simplejson e simplejson==3.8.0. Questo campo è obbligatorio.
repo STRING Repository in cui è possibile trovare il pacchetto. Se non specificato, viene utilizzato l'indice pip predefinito.

RCranLibrary

Nome campo Tipo Description
Pacchetto STRING Nome del pacchetto CRAN da installare. Questo campo è obbligatorio.
repo STRING Repository in cui è possibile trovare il pacchetto. Se non specificato, viene utilizzato il repository CRAN predefinito.

LibraryInstallStatus

Stato di una libreria in un cluster specifico.

Stato Descrizione
PENDING Non è stata ancora eseguita alcuna azione per installare la libreria. Questo stato dovrebbe essere di breve durata.
RESOLVING I metadati necessari per installare la libreria vengono recuperati dal repository fornito.

Per le librerie Jar, Egg e Whl, questo passaggio è no-op.
INSTALLAZIONE La libreria viene installata attivamente, aggiungendo risorse a Spark o eseguendo comandi di sistema all'interno dei nodi Spark.
INSTALLATO La libreria è stata installata correttamente.
SKIPPED L'installazione in un cluster Databricks Runtime 7.0 o versione successiva è stata ignorata a causa dell'incompatibilità della versione di Scala.
FAILED Alcuni passaggi dell'installazione non sono riusciti. Altre informazioni sono disponibili nel campo messaggi.
UNINSTALL_ON_RESTART La libreria è stata contrassegnata per la rimozione. Le librerie possono essere rimosse solo quando i cluster vengono riavviati, quindi le librerie che accedono a questo stato rimarranno fino al riavvio del cluster.