注意
本文介绍适用于 Databricks Runtime 13.3 LTS 及更高版本的 Databricks Connect。
本页介绍在 Databricks Connect 与 Azure Databricks 群集 或 无服务器计算之间配置连接的不同方式。
使用 Databricks Connect,可将热门 IDE(例如 Visual Studio Code、PyCharm、RStudio Desktop、IntelliJ IDEA、笔记本服务器和其他自定义应用程序)连接到 Azure Databricks 群集。 请参阅什么是 Databricks Connect?。
设置
在开始之前,需具备以下先决条件:
- 已安装 Databricks Connect。 有关安装要求,请参阅 Databricks Connect 使用情况要求。
- Azure Databricks 工作区实例名称。 这是您的计算服务器的服务器主机名值。 请参阅获取 Azure Databricks 计算资源的连接详细信息。
- 如果要连接到经典计算,群集的 ID。 可以从 URL 检索群集 ID。 请参阅 计算资源 URL 和 ID。
配置与群集的连接
可以通过多种方式配置与集群的连接。 Databricks Connect 按以下顺序搜索配置属性,并使用它找到的第一个配置。 有关高级配置信息,请参阅 Databricks Connect 的高级用法。
- DatabricksSession 类的 remote() 方法。
- Databricks 配置文件
- DATABRICKS_CONFIG_PROFILE 环境变量
- 每个配置属性具有一个环境变量
- 名为 DEFAULT 的 Databricks 配置文件
类的DatabricksSessionremote()方法
对于此选项,仅适用于 Azure Databricks 个人访问令牌身份验证(旧版), 请指定工作区实例名称、Azure Databricks 个人访问令牌和群集的 ID。
可以通过多种方式初始化 DatabricksSession 类:
- 在
host中设置token、cluster_id和DatabricksSession.builder.remote()字段。 - 使用 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字段。
如果已使用群集 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 身份验证类型所需的任何其他字段。
如果已使用群集 ID 设置 DATABRICKS_CLUSTER_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 身份验证类型所需的任何其他字段。
如果已使用群集 ID 设置 DATABRICKS_CLUSTER_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 支持连接到无服务器计算。 若要使用此功能,必须满足连接到无服务器的版本要求。 请参阅 Databricks Connect 使用情况要求。
重要
此功能具有以下限制:
- 此功能仅在用于 Python 的 Databricks Connect 中受支持。
- Python 和 Databricks Connect 版本必须兼容。 请参阅 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
spark = DatabricksSession.builder.serverless(True).getOrCreate()
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.remote(serverless=True).getOrCreate()
注意
无服务器计算会话在处于非活动状态 10 分钟后超时。 在此之后,应使用 getOrCreate() 创建新的 Spark 会话以连接到无服务器计算。
验证与 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