注意
本文介绍适用于 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 按以下顺序搜索配置属性,并使用它找到的第一个配置。 有关高级配置信息,请参阅适用于 Python 的 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 14.3 及更高版本中,还可以使用 validateSession()
验证环境:
DatabricksSession.builder.validateSession(True).getOrCreate()
禁用 Databricks Connect
可以在任何给定群集上禁用 Databricks Connect(和基础 Spark Connect)服务。
若要禁用 Databricks Connect 服务,请在群集上设置以下 Spark 配置。
spark.databricks.service.server.enabled false