Libraries API 2.0

Libraries API позволяет устанавливать и удалять библиотеки, а также получать состояние библиотек в кластере.

Важно!

Чтобы получить доступ к REST API Databricks, необходимо пройти проверку подлинности.

Все состояния кластера

Конечная точка Метод HTTP
2.0/libraries/all-cluster-statuses GET

Позволяет получить данные о состоянии всех библиотек во всех кластерах. Данные о состоянии будут доступны для всех библиотек, установленных в кластерах с помощью API или пользовательского интерфейса библиотек, а также библиотек, настроенных для установки во всех кластерах с помощью пользовательского интерфейса библиотек. Если библиотека настроена для установки во всех кластерах, is_library_for_all_clusters будет иметь значение true, даже если библиотека была установлена в этом конкретном кластере.

Пример

Запрос

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

Замените <databricks-instance> именем экземпляра рабочей области Azure Databricks, например 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
        }
      ]
    }
  ]
}

Структура ответа

Имя поля Тип Описание
statuses Массив объектов ClusterLibraryStatuses Список состояний кластеров.

Состояние кластера

Конечная точка Метод HTTP
2.0/libraries/cluster-status GET

Позволяет получить состояния библиотек в одном кластере. Данные о состоянии будут доступны для всех библиотек, установленных в кластере с помощью API или пользовательского интерфейса библиотек, а также библиотек, настроенных для установки во всех кластерах с помощью пользовательского интерфейса библиотек. Если библиотека настроена для установки во всех кластерах, is_library_for_all_clusters будет иметь значение true, даже если библиотека была установлена в этом кластере.

Пример

Запрос

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

Структура запроса

Имя поля Тип Описание
cluster_id STRING Уникальный идентификатор кластера, состояние которого необходимо получить. Это обязательное поле.

Структура ответа

Имя поля Тип Описание
cluster_id STRING Уникальный идентификатор кластера.
library_statuses Массив объектов LibraryFullStatus. Состояние всех библиотек в кластере.

Установка

Конечная точка Метод HTTP
2.0/libraries/install POST

Позволяет установить библиотеки в кластере. Установка происходит асинхронно. Она выполняется в фоновом режиме после запроса.

Важно!

Этот вызов завершится ошибкой, если работа кластера была завершена.

Установка библиотеки wheel в кластере подобна выполнению команды pip для файла wheel непосредственно в драйвере и исполнителях. При этом устанавливаются все зависимости, указанные в файле библиотеки setup.py и требуется, чтобы имя библиотеки, соответствовало соглашению об именовании файлов wheel.

Установка в исполнителях происходит только при запуске новой задачи. В Databricks Runtime 7.1 и более ранних версий порядок установки библиотек не детерминирован. Для библиотек wheel можно обеспечить детерминированный порядок установки, создав ZIP-файл с суффиксом .wheelhouse.zip, который включает все файлы wheel.

Пример

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-файл.

Структура запроса

Имя поля Тип Описание
cluster_id STRING Уникальный идентификатор кластера, в котором будут установлены эти библиотеки. Это обязательное поле.
libraries Массив объектов Library. Устанавливаемые библиотеки.

Удаление

Конечная точка Метод 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-файл.

Структура запроса

Имя поля Тип Описание
cluster_id STRING Уникальный идентификатор кластера, в котором будут удалены эти библиотеки. Это обязательное поле.
libraries Массив объектов Library. Удаляемые библиотеки.

Структуры данных

Содержание

ClusterLibraryStatuses

Имя поля Тип Описание
cluster_id STRING Уникальный идентификатор кластера.
library_statuses Массив объектов LibraryFullStatus. Состояние всех библиотек в кластере.

Библиотека

Имя поля Тип Описание
jar, egg, whl, pypi, maven или cran STRING, STRING, STRING, PythonPyPiLibrary, MavenLibrary или RCranLibrary Если используется jar, указывается универсальный код ресурса (URI) устанавливаемой библиотеки JAR. Поддерживаются URI DBFS и ADLS (abfss). Например, { "jar": "dbfs:/mnt/databricks/library.jar" } или
{ "jar": "abfss://my-bucket/library.jar" }. Если используется ADLS, убедитесь, что кластер имеет доступ на чтение в библиотеке.

Если используется jar, указывается URI устанавливаемого файла egg. Поддерживаются URI DBFS и ADLS. Например, { "egg": "dbfs:/my/egg" } или
{ "egg": "abfss://my-bucket/egg" }.

Если используется whl, указывается URI устанавливаемого файла wheel или ZIP-файла wheel. Поддерживаются URI DBFS и ADLS. Например, { "whl": "dbfs:/my/whl" } или
{ "whl": "abfss://my-bucket/whl" }. Если используется ADLS, убедитесь, что кластер имеет доступ на чтение в библиотеке. Кроме того, имя файла wheel должно использовать правильное соглашение. Если необходимо установить ZIP-файлы wheel, суффиксом имени файла должен быть .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

Состояние библиотеки в определенном кластере.

Имя поля Тип Описание
библиотека Библиотека Уникальный идентификатор библиотеки.
status LibraryInstallStatus Состояние установки библиотеки в кластере.
отправляемых из облака на устройство Массив объектов STRING. Все информационные и предупреждающие сообщения, появившиеся в этой библиотеке до текущего момента.
is_library_for_all_clusters BOOL Указывает, настроена ли библиотека для установки во всех кластерах через пользовательский интерфейс библиотек.

MavenLibrary

Имя поля Тип Описание
Координаты STRING Координаты Maven в стиле Gradle. Например: 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. Также поддерживается необязательная точная спецификация версии. Примерами являются события simplejson и simplejson==3.8.0. Это обязательное поле.
repo STRING Репозиторий, в котором можно найти пакет. Если он не указан, используется индекс PIP по умолчанию.

RCranLibrary

Имя поля Тип Описание
Пакет STRING Имя устанавливаемого пакета CRAN. Это обязательное поле.
repo STRING Репозиторий, в котором можно найти пакет. Если он не указан, используется индекс CRAN по умолчанию.

LibraryInstallStatus

Состояние библиотеки в определенном кластере.

Состояние Описание
PENDING Действия по установке библиотеки пока не были предприняты. Это состояние должно держаться в течение очень короткого периода времени.
RESOLVING Метаданные, необходимые для установки библиотеки, извлекаются из предоставленного репозитория.

Для библиотек Jar, Egg и Whl этот шаг не применяется.
INSTALLING Происходит установка библиотеки путем добавления ресурсов в Spark или выполнения системных команд на узлах Spark.
INSTALLED Библиотека успешно установлена.
SKIPPED Установка в кластере Databricks Runtime версии 7.0 или выше была пропущена из-за несовместимости версии Scala.
FAILED Не удалось выполнить один из шагов установки. Дополнительные сведения можно найти в поле сообщений.
UNINSTALL_ON_RESTART Библиотека помечена для удаления. Библиотеки могут быть удалены только после перезапуска кластеров. Поэтому библиотеки с таким состоянием сохраняются до перезапуска кластера.