备注
本文介绍适用于 Databricks Runtime 13.3 LTS 及更高版本的 Databricks Connect。
Databricks Connect 允许从 Databricks 外部的本地开发环境连接到 Databricks 计算。 然后,您可以直接在 IDE 中开发、调试和测试代码,然后再将代码移动到 Databricks 的笔记本或作业中。 请参阅什么是 Databricks Connect?。
要实现从本地开发到 Databricks 部署的无缝过渡,所有 Databricks Connect API 均在 Databricks 笔记本中作为相应 Databricks Runtime 的一部分提供。 这样就可以在 Databricks 笔记本中运行代码,而无需对代码进行任何更改。
在本地开发环境和 Databricks 工作区的笔记本和作业中使用 Databricks Connect for Python 时,行为 DatabricksSession
略有不同。
在 Databricks 外部的 IDE 本地运行代码时, DatabricksSession.builder.getOrCreate()
获取提供配置的现有 Spark 会话(如果存在),或者创建一个新的 Spark 会话(如果不存在)。
DatabricksSession.builder.create()
始终创建新的 Spark 会话。 连接参数,例如 host
、token
和 cluster_id
是从源代码、环境变量或 .databrickscfg
配置文件填充的。
换句话说,使用 Databricks Connect 运行时,以下代码将创建两个单独的会话:
spark1 = DatabricksSession.builder.create()
spark2 = DatabricksSession.builder.create()
在 Databricks 工作区的笔记本或作业中运行代码时, DatabricksSession.builder.getOrCreate()
在不使用任何其他配置的情况下,返回默认的 Spark 会话(也可通过 spark
变量访问)。 该 spark
变量已预先配置为连接到笔记本或作业附加到的计算实例。 如果设置了其他连接参数,例如通过使用 DatabricksSession.builder.clusterId(...).getOrCreate()
或 DatabricksSession.builder.serverless().getOrCreate()
设置其他连接参数,则会创建新的 Spark 会话。
DatabricksSession.builder.create()
需要笔记本中的显式连接参数,例如 DatabricksSession.builder.clusterId(...).create()
,否则会返回错误 [UNSUPPORTED]
。
可以使用 Databricks Connect,通过remote()
连接到未附加到笔记本或作业的 Databricks 计算,该连接采用配置kwargs或单个配置方法,例如host()
或token()
。 在这些情况下,将为被引用的计算资源创建一个新会话,这类似于在 Databricks 笔记本或作业外部使用时的情况。
备注
对于在无服务器计算上运行的笔记本,默认情况下查询在 9000 秒后超时。 可以通过设置 Spark 配置属性 spark.databricks.execution.timeout
来自定义此功能。 请参阅在 Azure Databricks 上设置 Spark 配置属性。