Конфигурация вычислений для 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 и совместимости.
- Кластер должен использовать режим доступа к кластеру назначенного или общего доступа. См . режимы доступа.
Настройка
Для этого потребуются следующие компоненты.
- При подключении к кластеру идентификатор кластера. Идентификатор кластера можно получить из URL-адреса. См . URL-адрес кластера и идентификатор.
- Имя экземпляра рабочей области Azure Databricks. Это значение имени узла сервера для вычислений. См . сведения о подключении для вычислительного ресурса Azure Databricks.
- Любые другие свойства, необходимые для типа проверки подлинности Databricks, который требуется использовать.
Примечание.
Проверка подлинности 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".
- Метод remote() класса DatabricksSession.
- Профиль конфигурации Databricks
- Переменная среды DATABRICKS_CONFIG_PROFILE
- Переменная среды для каждого свойства конфигурации
- Профиль конфигурации 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, который требуется использовать.
Обязательные поля профиля конфигурации для каждого типа проверки подлинности приведены следующим образом:
- Для проверки подлинности маркера личного доступа Azure Databricks:
host
иtoken
. - Для проверки подлинности на компьютере (M2M) OAuth (где поддерживается):
host
client_id
иclient_secret
. - Для проверки подлинности OAuth между компьютерами (U2M) (где поддерживается):
host
- Для проверки подлинности
host
субъекта-службы Microsoft Entra ID (ранее — Azure Active Directory): ,azure_tenant_id
,azure_client_id
azure_client_secret
и, возможноazure_workspace_resource_id
, . - Для проверки подлинности Azure CLI:
host
- Для проверки подлинности управляемых удостоверений Azure (где поддерживается):
host
,azure_use_msi
azure_client_id
и, возможноazure_workspace_resource_id
, .
Затем задайте имя этого профиля конфигурации через класс конфигурации.
Можно указать 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
.
Обязательные поля профиля конфигурации для каждого типа проверки подлинности приведены следующим образом:
- Для проверки подлинности маркера личного доступа Azure Databricks:
host
иtoken
. - Для проверки подлинности на компьютере (M2M) OAuth (где поддерживается):
host
client_id
иclient_secret
. - Для проверки подлинности OAuth между компьютерами (U2M) (где поддерживается):
host
- Для проверки подлинности
host
субъекта-службы Microsoft Entra ID (ранее — Azure Active Directory): ,azure_tenant_id
,azure_client_id
azure_client_secret
и, возможноazure_workspace_resource_id
, . - Для проверки подлинности Azure CLI:
host
- Для проверки подлинности управляемых удостоверений Azure (где поддерживается):
host
,azure_use_msi
azure_client_id
и, возможноazure_workspace_resource_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, который требуется использовать.
Необходимые переменные среды для каждого типа проверки подлинности приведены следующим образом:
- Для проверки подлинности маркера личного доступа Azure Databricks:
DATABRICKS_HOST
иDATABRICKS_TOKEN
. - Для проверки подлинности на компьютере (M2M) OAuth (где поддерживается):
DATABRICKS_HOST
DATABRICKS_CLIENT_ID
иDATABRICKS_CLIENT_SECRET
. - Для проверки подлинности OAuth между компьютерами (U2M) (где поддерживается):
DATABRICKS_HOST
- Для проверки подлинности
DATABRICKS_HOST
субъекта-службы Microsoft Entra ID (ранее — Azure Active Directory): ,ARM_TENANT_ID
,ARM_CLIENT_ID
ARM_CLIENT_SECRET
и, возможноDATABRICKS_AZURE_RESOURCE_ID
, . - Для проверки подлинности Azure CLI:
DATABRICKS_HOST
- Для проверки подлинности управляемых удостоверений Azure (где поддерживается):
DATABRICKS_HOST
,ARM_USE_MSI
ARM_CLIENT_ID
и, возможноDATABRICKS_AZURE_RESOURCE_ID
, .
Затем инициализировать 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
.
Обязательные поля профиля конфигурации для каждого типа проверки подлинности приведены следующим образом:
- Для проверки подлинности маркера личного доступа Azure Databricks:
host
иtoken
. - Для проверки подлинности на компьютере (M2M) OAuth (где поддерживается):
host
client_id
иclient_secret
. - Для проверки подлинности OAuth между компьютерами (U2M) (где поддерживается):
host
- Для проверки подлинности
host
субъекта-службы Microsoft Entra ID (ранее — Azure Active Directory): ,azure_tenant_id
,azure_client_id
azure_client_secret
и, возможноazure_workspace_resource_id
, . - Для проверки подлинности Azure CLI:
host
- Для проверки подлинности управляемых удостоверений Azure (где поддерживается):
host
,azure_use_msi
azure_client_id
и, возможноazure_workspace_resource_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