注意
本文介绍适用于 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() 方法
对于此选项,仅适用于 使用 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()
验证与 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