Databricks Connect 的计算配置
注意
本文介绍适用于 Databricks Runtime 13.3 LTS 及更高版本的 Databricks Connect。
本文将配置属性以在 Databricks Connect 与 Azure Databricks 群集 或 无服务器计算之间建立连接。 除非另有说明,否则此信息对 Databricks Connect 的 Python 和 Scala 版本均适用。
使用 Databricks Connect,可将热门 IDE(例如 Visual Studio Code、PyCharm、RStudio Desktop、IntelliJ IDEA、笔记本服务器和其他自定义应用程序)连接到 Azure Databricks 群集。 请参阅什么是 Databricks Connect?。
要求
若要配置与 Databricks 计算的连接,必须具备:
- 已安装 Databricks Connect。 有关 Databricks Connect 特定语言版本的安装要求和步骤,请参阅:
- 安装用于 Python 的 Databricks Connect。
- 安装用于 R 的 Databricks Connect。
- 安装用于 Scala 的 Databricks Connect。
- 已启用 Unity Catalog 的 Azure Databricks 帐户和工作区。 请参阅设置和管理 Unity Catalog 和为 Unity Catalog 启用工作区。
- 具有 Databricks Runtime 13.3 LTS 或更高版本的 Azure Databricks 群集。
- 群集的 Databricks Runtime 版本必须等于或更高版本的 Databricks Connect 包版本。 Databricks 建议使用与 Databricks Runtime 版本相匹配的 Databricks Connect 的最新包。 若要使用 Databricks Runtime 的更高版本中提供的功能,必须升级 Databricks Connect 包。 请参阅 Databricks Connect 发行说明,了解可用 Databricks Connect 版本列表。 有关 Databricks Runtime 版本发行说明,请参阅 Databricks Runtime 发行说明版本和兼容性。
- 群集必须使用“已分配”或“共享”群集访问模式。 请参阅访问模式。
安装
在开始之前,需具备以下先决条件:
- 如果要连接到群集,则群集的 ID。 可以从 URL 检索群集 ID。 请参阅群集 URL 和 ID。
- Azure Databricks 工作区实例名称。 此即计算的“服务器主机名”值。 请参阅获取 Azure Databricks 计算资源的连接详细信息。
- 要使用的 Databricks 身份验证类型所需的任何其他属性。
注意
Databricks SDK for Python 0.19.0 及更高版本支持 OAuth 用户到计算机 (U2M) 身份验证。 将代码项目的 Databricks SDK 的已安装版本更新为 0.19.0 或更高版本,以使用 OAuth U2M 身份验证。 请参阅 Databricks SDK for Python 入门。
对于 OAuth U2M 身份验证,必须在运行 Python 代码之前使用 Databricks CLI 进行身份验证。 请参阅教程。
OAuth 计算机到计算机 (M2M) 身份验证 0.18.0 及更高版本的 Databricks SDK for Python 支持 OAuth 计算机到计算机 (M2M) 身份验证。 将代码项目的 Databricks SDK 的已安装版本更新为 0.18.0 或更高版本,以使用 OAuth M2M 身份验证。 请参阅 Databricks SDK for Python 入门。
Databricks SDK for Python 尚未实现 Azure 托管标识身份验证。
配置与群集的连接
可通过多种方式配置到群集的连接。 Databricks Connect 按以下顺序搜索配置属性,并使用它找到的第一个配置。 有关高级配置信息,请参阅适用于 Python 的 Databricks Connect 的高级用法。
- DatabricksSession 类的 remote() 方法。
- Databricks 配置文件
- DATABRICKS_CONFIG_PROFILE 环境变量
- 每个配置属性具有一个环境变量
- 名为 DEFAULT 的 Databricks 配置文件
DatabricksSession
类的remote()
方法
对于仅适用于 Azure Databricks 个人访问令牌身份验证的此选项,请指定工作区实例名称、Azure Databricks 个人访问令牌和群集的 ID。
可以通过多种方式初始化 DatabricksSession
类:
- 在
DatabricksSession.builder.remote()
中设置host
、token
和cluster_id
字段。 - 使用 Databricks SDK 的
Config
类。 - 指定 Databricks 配置文件和
cluster_id
字段。
Databricks 建议通过环境变量或配置文件配置属性,而不是在代码中指定这些连接属性,如本部分通篇所述。 以下代码示例假定你提供建议的retrieve_*
函数的一些实现,以从用户或其他配置存储(例如,Azure 密钥保管库)中获取必要的属性。
每种方法的代码如下所示:
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
。 - 对于 OAuth 计算机到计算机 (M2M) 身份验证(在支持的情况下):
host
、client_id
和client_secret
。 - 对于 OAuth 用户到计算机 (U2M) 身份验证(在支持的情况下):
host
。 - 对于 Microsoft Entra ID(以前称为 Azure Active Directory)服务主体身份验证:
host
、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
环境变量设置为群集的 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
环境变量设置为群集的 ID,则也不需要指定 cluster_id
。
每种身份验证类型所需的配置文件字段如下:
- 适用于 Azure Databricks 个人访问令牌身份验证:
host
和token
。 - 对于 OAuth 计算机到计算机 (M2M) 身份验证(在支持的情况下):
host
、client_id
和client_secret
。 - 对于 OAuth 用户到计算机 (U2M) 身份验证(在支持的情况下):
host
。 - 对于 Microsoft Entra ID(以前称为 Azure Active Directory)服务主体身份验证:
host
、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
。 - 对于 OAuth 计算机到计算机 (M2M) 身份验证(在支持的情况下):
DATABRICKS_HOST
、DATABRICKS_CLIENT_ID
和DATABRICKS_CLIENT_SECRET
。 - 对于 OAuth 用户到计算机 (U2M) 身份验证(在支持的情况下):
DATABRICKS_HOST
。 - 对于 Microsoft Entra ID(以前称为 Azure Active Directory)服务主体身份验证:
DATABRICKS_HOST
、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()
名为DEFAULT
的 Databricks 配置文件
对于此选项,请创建或标识 Azure Databricks 配置文件,其中包含字段 cluster_id
,以及你要使用的 Databricks 身份验证类型所需的任何其他字段。
如果你已将 DATABRICKS_CLUSTER_ID
环境变量设置为群集的 ID,则也不需要指定 cluster_id
。
每种身份验证类型所需的配置文件字段如下:
- 适用于 Azure Databricks 个人访问令牌身份验证:
host
和token
。 - 对于 OAuth 计算机到计算机 (M2M) 身份验证(在支持的情况下):
host
、client_id
和client_secret
。 - 对于 OAuth 用户到计算机 (U2M) 身份验证(在支持的情况下):
host
。 - 对于 Microsoft Entra ID(以前称为 Azure Active Directory)服务主体身份验证:
host
、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()
配置与无服务器计算的连接
重要
此功能目前以公共预览版提供。
用于 Python 的 Databricks Connect 支持连接到无服务器计算。 要使用此功能,必须满足连接到无服务器的要求。 请参阅 要求。
重要
此功能具有以下限制:
- 此功能仅在用于 Python 的 Databricks Connect 中受支持。
- 所有适用于 Python 的 Databricks Connect 限制
- 所有无服务器计算限制
- 只有作为无服务器计算环境的一部分包含的 Python 依赖项才能用于 UDF。 请参阅 无服务器客户端映像。 无法安装其他依赖项。
- 不支持具有自定义模块的 UDF。
可以通过以下方式之一配置与无服务器计算的连接:
将本地环境变量
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 分钟后超时。 之后,应使用 getOrCreate()
连接到无服务器计算创建新的 Spark 会话。
验证与 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