Поделиться через


Конфигурация вычислений для Databricks Connect

Примечание.

В этой статье рассматриваются Databricks Connect для Databricks Runtime 13.3 LTS и более поздних версий.

В этой статье описано, как настроить свойства для установления соединения между Databricks Connect и кластером Azure Databricks или бессерверными вычислениями. Эти сведения применяются к версии Python и Scala Databricks Connect, если не указано иное.

Databricks Connect позволяет подключать популярные идентификаторы, такие как Visual Studio Code, PyCharm, RStudio Desktop, IntelliJ IDEA, серверы записных книжек и другие пользовательские приложения к кластерам Azure Databricks. См. раздел "Что такое Databricks Connect?".

Требования

Чтобы настроить подключение к вычислительным ресурсам Databricks, необходимо:

  • Установлен Databricks Connect. Требования к установке и шаги для определенных языковых версий Databricks Connect см. в статье:
  • Учетная запись Azure Databricks и рабочая область с включенным каталогом Unity. См. статью "Настройка каталога Unity" и управление ими и включение рабочей области для каталога Unity.
  • Кластер Azure Databricks с Databricks Runtime 13.3 LTS или более поздней версии.
  • Версия среды выполнения Databricks в кластере должна быть равной или более поздней версии пакета Databricks Connect. Databricks рекомендует использовать последний пакет Databricks Connect, соответствующий версии Databricks Runtime. Чтобы использовать функции, доступные в более поздних версиях среды выполнения Databricks, необходимо обновить пакет Databricks Connect. См. заметки о выпуске Databricks Connect для списка доступных выпусков Databricks Connect. Заметки о выпуске версии Databricks Runtime см. в заметках о выпуске Databricks Runtime и совместимости.
  • Кластер должен использовать режим доступа к кластеру назначенного или общего доступа. См . режимы доступа.

Настройка

Для этого потребуются следующие компоненты.

Примечание.

  • Проверка подлинности OAuth на компьютере (U2M) поддерживается в пакете SDK Databricks для Python 0.19.0 и более поздних версий. Обновите установленную версию проекта кода пакета SDK Databricks для Python до версии 0.19.0 или более поздней, чтобы использовать проверку подлинности OAuth U2M. Ознакомьтесь с пакетом SDK Databricks для Python.

    Для проверки подлинности OAuth U2M необходимо использовать интерфейс командной строки Databricks для проверки подлинности перед запуском кода Python. См. руководство.

  • Проверка подлинности OAuth на компьютере (M2M) OAuth на компьютере (M2M) поддерживается в пакете SDK Databricks для Python 0.18.0 и более поздних версий. Обновите установленную версию проекта кода пакета SDK Databricks для Python до версии 0.18.0 или более поздней, чтобы использовать проверку подлинности OAuth M2M. Ознакомьтесь с пакетом SDK Databricks для Python.

  • Пакет SDK Databricks для Python еще не реализовал проверку подлинности управляемых удостоверений Azure.

Настройка подключения к кластеру

Существует несколько способов настройки подключения к кластеру. Databricks Connect ищет свойства конфигурации в следующем порядке и использует первую найденную конфигурацию. Дополнительные сведения о конфигурации см. в статье "Дополнительное использование Databricks Connect для Python".

  1. Метод remote() класса DatabricksSession.
  2. Профиль конфигурации Databricks
  3. Переменная среды DATABRICKS_CONFIG_PROFILE
  4. Переменная среды для каждого свойства конфигурации
  5. Профиль конфигурации Databricks с именем DEFAULT

DatabricksSession Метод класса remote()

Для этого параметра, который применяется только к проверке подлинности личного маркера доступа Azure Databricks, укажите имя экземпляра рабочей области, личный маркер доступа Azure Databricks и идентификатор кластера.

Класс можно инициализировать DatabricksSession несколькими способами:

  • hostЗадайте в поле , tokenа также cluster_id поля DatabricksSession.builder.remote().
  • Используйте класс пакета SDK Config Databricks.
  • Укажите профиль конфигурации Databricks вместе с полем cluster_id .

Вместо указания этих свойств подключения в коде Databricks рекомендует настраивать свойства с помощью переменных среды или файлов конфигурации, как описано в этом разделе. В следующих примерах кода предполагается, что вы предоставляете некоторую реализацию предлагаемых retrieve_* функций, чтобы получить необходимые свойства от пользователя или из другого хранилища конфигурации, например Azure KeyVault.

Код для каждого из этих подходов выглядит следующим образом:

Python

# Set the host, token, and cluster_id fields in DatabricksSession.builder.remote.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.remote(
host       = f"https://{retrieve_workspace_instance_name()}",
token      = retrieve_token(),
cluster_id = retrieve_cluster_id()
).getOrCreate()

Scala

// Set the host, token, and clusterId fields in DatabricksSession.builder.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder()
    .host(retrieveWorkspaceInstanceName())
    .token(retrieveToken())
    .clusterId(retrieveClusterId())
    .getOrCreate()

Python

# Use the Databricks SDK's Config class.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
host       = f"https://{retrieve_workspace_instance_name()}",
token      = retrieve_token(),
cluster_id = retrieve_cluster_id()
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

Scala

// Use the Databricks SDK's Config class.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig

val config = new DatabricksConfig()
    .setHost(retrieveWorkspaceInstanceName())
    .setToken(retrieveToken())
val spark = DatabricksSession.builder()
    .sdkConfig(config)
    .clusterId(retrieveClusterId())
    .getOrCreate()

Python

# Specify a Databricks configuration profile along with the `cluster_id` field.
# If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
# cluster's ID, you do not also need to set the cluster_id field here.
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
profile    = "<profile-name>",
cluster_id = retrieve_cluster_id()
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

Scala

// Specify a Databricks configuration profile along with the clusterId field.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig

val config = new DatabricksConfig()
    .setProfile("<profile-name>")
val spark = DatabricksSession.builder()
    .sdkConfig(config)
    .clusterId(retrieveClusterId())
    .getOrCreate()

Профиль конфигурации Databricks

Для этого параметра создайте или определите профиль конфигурации Azure Databricks, содержащий поле cluster_id и любые другие поля, необходимые для типа проверки подлинности Databricks, который требуется использовать.

Обязательные поля профиля конфигурации для каждого типа проверки подлинности приведены следующим образом:

Затем задайте имя этого профиля конфигурации через класс конфигурации.

Можно указать cluster_id несколько способов:

  • cluster_id Включите поле в профиль конфигурации, а затем просто укажите имя профиля конфигурации.
  • Укажите имя профиля конфигурации вместе с полем cluster_id .

Если вы уже установили DATABRICKS_CLUSTER_ID переменную среды с идентификатором кластера, вам также не нужно указывать cluster_id.

Код для каждого из этих подходов выглядит следующим образом:

Python

# Include the cluster_id field in your configuration profile, and then
# just specify the configuration profile's name:
from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.profile("<profile-name>").getOrCreate()

Scala

// Include the cluster_id field in your configuration profile, and then
// just specify the configuration profile's name:
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig

val config = new DatabricksConfig()
    .setProfile("<profile-name>")
    val spark = DatabricksSession.builder()
    .sdkConfig(config)
    .getOrCreate()

Python

# Specify the configuration profile name along with the cluster_id field.
# In this example, retrieve_cluster_id() assumes some custom implementation that
# you provide to get the cluster ID from the user or from some other
# configuration store:
from databricks.connect import DatabricksSession
from databricks.sdk.core import Config

config = Config(
profile    = "<profile-name>",
cluster_id = retrieve_cluster_id()
)

spark = DatabricksSession.builder.sdkConfig(config).getOrCreate()

Scala

// Specify a Databricks configuration profile along with the clusterId field.
// If you have already set the DATABRICKS_CLUSTER_ID environment variable with the
// cluster's ID, you do not also need to set the clusterId field here.
import com.databricks.connect.DatabricksSession
import com.databricks.sdk.core.DatabricksConfig

val config = new DatabricksConfig()
    .setProfile("<profile-name>")
val spark = DatabricksSession.builder()
    .sdkConfig(config)
    .clusterId(retrieveClusterId())
    .getOrCreate()

Переменная DATABRICKS_CONFIG_PROFILE среды

Для этого параметра создайте или определите профиль конфигурации Azure Databricks, содержащий поле cluster_id и любые другие поля, необходимые для типа проверки подлинности Databricks, который требуется использовать.

Если вы уже установили DATABRICKS_CLUSTER_ID переменную среды с идентификатором кластера, вам также не нужно указывать cluster_id.

Обязательные поля профиля конфигурации для каждого типа проверки подлинности приведены следующим образом:

Задайте для переменной DATABRICKS_CONFIG_PROFILE среды имя этого профиля конфигурации. Затем инициализировать DatabricksSession класс:

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Переменная среды для каждого свойства конфигурации

Для этого параметра задайте DATABRICKS_CLUSTER_ID переменную среды и любые другие переменные среды, необходимые для типа проверки подлинности Databricks, который требуется использовать.

Необходимые переменные среды для каждого типа проверки подлинности приведены следующим образом:

Затем инициализировать DatabricksSession класс:

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Профиль конфигурации Databricks с именем DEFAULT

Для этого параметра создайте или определите профиль конфигурации Azure Databricks, содержащий поле cluster_id и любые другие поля, необходимые для типа проверки подлинности Databricks, который требуется использовать.

Если вы уже установили DATABRICKS_CLUSTER_ID переменную среды с идентификатором кластера, вам также не нужно указывать cluster_id.

Обязательные поля профиля конфигурации для каждого типа проверки подлинности приведены следующим образом:

Присвойте этому профилю DEFAULTконфигурации имя.

Затем инициализировать DatabricksSession класс:

Python

from databricks.connect import DatabricksSession

spark = DatabricksSession.builder.getOrCreate()

Scala

import com.databricks.connect.DatabricksSession

val spark = DatabricksSession.builder().getOrCreate()

Настройка подключения к бессерверным вычислениям

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Databricks Connect для Python поддерживает подключение к бессерверным вычислениям. Чтобы использовать эту функцию, необходимо выполнить требования для подключения к бессерверному серверу. См. раздел Требования.

Внимание

Сейчас эта функция имеет следующие ограничения:

  • Эта функция поддерживается только в Databricks Connect для Python.
  • Все ограничения Databricks Connect для Python
  • Все ограничения бессерверных вычислений
  • Для определяемых пользователем пользователей можно использовать только зависимости Python, включенные в состав бессерверной вычислительной среды. См . бессерверные образы клиентов. Не удается установить дополнительные зависимости.
  • Определяемые пользователем функции с пользовательскими модулями не поддерживаются.

Подключение к бессерверным вычислениям можно настроить одним из следующих способов:

  • Задайте для переменной DATABRICKS_SERVERLESS_COMPUTE_ID autoлокальной среды значение . Если задана эта переменная среды, Databricks Connect игнорирует cluster_idзначение .

  • В локальном профиле конфигурации Databricks задайте serverless_compute_id = autoссылку на этот профиль из кода.

    [DEFAULT]
    host = https://my-workspace.cloud.databricks.com/
    serverless_compute_id = auto
    token = dapi123...
    
  • Или используйте любой из следующих параметров:

from databricks.connect import DatabricksSession as SparkSession

spark = DatabricksSession.builder.serverless(True).getOrCreate()
from databricks.connect import DatabricksSession as SparkSession

spark = DatabricksSession.builder.remote(serverless=True).getOrCreate()

Примечание.

Бессерверный сеанс вычислений истекает через 10 минут бездействия. После этого необходимо создать новый сеанс Spark для getOrCreate() подключения к бессерверным вычислениям.

Проверка подключения к Databricks

Чтобы проверить среду, учетные данные по умолчанию и подключение к вычислительным ресурсам правильно настроены для Databricks Connect, выполните databricks-connect test команду, которая завершается ошибкой с кодом выхода без нуля и соответствующим сообщением об ошибке при обнаружении несоответствия в настройке.

databricks-connect test

В Databricks Connect 14.3 и более поздних версиях можно также проверить среду с помощью validateSession():

DatabricksSession.builder.validateSession(True).getOrCreate()

Отключение Databricks Connect

Службы Databricks Connect (и базовые службы Spark Connect) можно отключить в любом определенном кластере.

Чтобы отключить службу Databricks Connect, задайте следующую конфигурацию Spark в кластере.

spark.databricks.service.server.enabled false