使用 Databricks 连接器连接到另一个 Databricks 工作区

本文提供使用 Databricks 连接器连接到另一个 Databricks 工作区的语法示例。 此连接器利用 Databricks JDBC 驱动程序,该驱动程序包含在 Databricks Runtime 13.0 及更高版本中。

重要

对于大多数数据共享操作,Databricks 建议使用 Delta Sharing。 请参阅使用 Delta Sharing 安全共享数据和 AI 资产。 管理对其他 Databricks 工作区中的数据的查询时,使用 Lakehouse Federation 也可能更好。 请参阅什么是 Lakehouse Federation

连接到另一个 Databricks 工作区

使用 Databricks Spark 连接器,你可以连接到另一个 Databricks 工作区中配置的计算资源,并将结果返回到当前的 Azure Databricks 工作区。 你必须有权访问两个工作区上的活动计算,否则查询不会成功。

已为 jdbc:databricks:// URL 注册 JDBC 驱动程序。 必须配置并使用个人访问令牌,该令牌授予你对远程访问的工作区资源的权限。 请参阅令牌管理 API

注意

如果已将 Databricks JDBC 库附加到群集,则使用附加到群集的库版本,而不使用 Databricks Runtime 中包含的版本。

从另一个 Databricks 工作区读取数据

可以指定格式 databricks 以在读取数据时使用 Databricks Spark 连接器,如以下示例所示:

df = (spark.read
  .format("databricks")
  .option("host", "adb-<workspace-id>.<random-number>.databricks.azure.cn")
  .option("httpPath", "/sql/1.0/warehouses/<warehouse-id>")
  .option("personalAccessToken", "<auth-token>")
  .option("dbtable", "<table-name>")
  .load()
)

针对另一个 Databricks 工作区创建外部表

可以在一个链接到单独的 Azure Databricks 工作区的 Azure Databricks 工作区中注册外部表。

以下示例演示了此语法,使用 secret 函数获取与 Databricks 机密一起存储的凭据:

注意

有关 Databricks 机密的详细信息,请参阅机密函数

CREATE TABLE databricks_external_table
USING databricks
OPTIONS (
  host 'adb-<workspace-id>.<random-number>.databricks.azure.cn',
  httpPath '/sql/1.0/warehouses/<warehouse-id>',
  personalAccessToken secret('<scope>', '<token>'),
  dbtable '<table-name>'
);