重要
旧查询联合文档已停用,可能不会更新。 此内容中提到的产品、服务或技术未经 Databricks 正式认可或测试。 请参见什么是 Lakehouse 联盟?
本文提供了使用 Databricks 连接器连接到另一个 Databricks 工作区的语法示例。 此连接器利用 Databricks JDBC 驱动程序,该驱动程序包含在 Databricks Runtime 13.3 LTS 及更高版本中。
重要
对于大多数数据共享操作,Databricks 建议使用 Delta Sharing。 请参阅什么是 Delta Sharing?。 您也许更倾向于使用 Lakehouse Federation 来管理对其他 Databricks 工作区中的数据的查询。 请参阅“什么是 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 机密的详细信息,请参阅 secret
函数。
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>'
);