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

Примечание.

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

На этой странице описаны различные способы настройки подключения между Databricks Connect и Azure Databricks кластер или серверлесс вычисления.

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

Настройка

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

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

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

  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().
  • Используйте класс Config из SDK 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 и Scala поддерживают подключение к бессерверным вычислениям. Чтобы использовать эту функцию, необходимо выполнить требования к версии для подключения к бессерверному серверу. См. сведения о требованиях к использованию Databricks Connect.

Внимание

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

Для Python можно настроить подключение к бессерверным вычислениям в локальной среде:

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

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

    [DEFAULT]
    host = https://my-workspace.cloud.databricks.com/
    serverless_compute_id = auto
    token = dapi123...
    

Или для Python или Scala:

Python

from databricks.connect import DatabricksSession

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

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

язык программирования Scala

import com.databricks.connect.DatabricksSession

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

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

Чтобы убедиться, что среда, учетные данные по умолчанию и подключение к вычислительным ресурсам настроены правильно для Databricks Connect, выполните databricks-connect test команду:

databricks-connect test

Эта команда завершается с ненулевым кодом выхода и соответствующим сообщением об ошибке при обнаружении любой несовместимости в установке, например, если версия Databricks Connect несовместима с версией бессерверных вычислений Databricks. Сведения о поддержке версий Databricks Connect см. в разделах о версиях Databricks Connect.

В 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