如何在Databricks外部访问Unity Catalog元数据存储并通过本地Spark查询数据
在Databricks外部访问Unity Catalog元数据及本地Spark查询方案
一、外部访问Unity Catalog元数据的方法
1. 使用Databricks SQL Connector
这是编程场景下最直接的访问方式,支持Python、Java、Scala等语言,可查询元数据(如catalog、schema、表结构)或直接读取数据。
- 安装依赖(以Python为例):
pip install databricks-sql-connector - 代码示例(查询元数据):
from databricks import sql with sql.connect( server_hostname="你的Workspace域名", http_path="/sql/1.0/endpoints/你的SQL端点ID", access_token="你的个人访问令牌(PAT)" ) as conn: with conn.cursor() as cursor: # 查询所有catalog cursor.execute("SHOW CATALOGS") print(cursor.fetchall()) # 查询指定catalog下的schema cursor.execute("USE CATALOG main") cursor.execute("SHOW SCHEMAS") print(cursor.fetchall()) - 认证说明:支持个人访问令牌(PAT)、服务主体令牌,需确保令牌拥有对应Unity Catalog资源的权限(如
USE CATALOG、SELECT等)。
2. 通过Databricks REST API
适合自动化脚本或系统集成场景,直接调用Unity Catalog专属API端点获取元数据:
- 核心端点示例:
- 列出所有catalog:
GET /api/2.1/unity-catalog/catalogs - 列出指定catalog下的schema:
GET /api/2.1/unity-catalog/schemas?catalog_name=main - 获取表结构详情:
GET /api/2.1/unity-catalog/tables/{catalog_name}.{schema_name}.{table_name}
- 列出所有catalog:
- 认证方式:请求头携带
Authorization: Bearer <你的访问令牌>,令牌需具备unityCatalog/metastoreAdmin或对应资源的操作权限。
3. 使用ODBC/JDBC驱动
支持BI工具(如DBeaver、Tableau)可视化浏览元数据:
- 下载Databricks官方ODBC/JDBC驱动,配置连接字符串:
- ODBC连接字符串示例:
Driver={Databricks ODBC Driver};Host=你的Workspace域名;Port=443;HTTPPath=/sql/1.0/endpoints/你的SQL端点ID;AuthMech=3;UID=token;PWD=你的访问令牌
- ODBC连接字符串示例:
- 连接成功后,即可在工具中直观查看catalog、schema、表的元数据,也可执行查询操作。
二、本地Spark查询Unity Catalog数据的实现
可以通过Databricks Connect v2实现本地Spark与Unity Catalog的无缝集成,步骤如下:
1. 环境准备
- 本地Spark版本需与Databricks Runtime版本兼容(如Runtime 13.x对应Spark 3.3.x)
- 安装匹配版本的Databricks Connect:
pip install databricks-connect==13.3.* # 版本需与Workspace的Runtime版本一致
2. 配置连接
执行初始化命令,填入Workspace URL、个人访问令牌、集群ID(或SQL端点ID):
databricks-connect configure
3. 本地Spark代码示例
from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() # 指定Unity Catalog的catalog和schema spark.sql("USE CATALOG main") spark.sql("USE SCHEMA default") # 查询表数据 df = spark.sql("SELECT * FROM sample_table LIMIT 10") df.show() # 查询元数据(如表结构) spark.sql("DESCRIBE TABLE sample_table").show()
注意事项
- 需保证本地Spark的依赖包版本与Databricks Runtime一致,避免版本冲突
- 访问令牌需拥有目标catalog/schema/表的对应权限(如
SELECT、USE CATALOG) - 若使用SQL端点而非集群,需在配置中指定SQL端点的HTTP路径
内容的提问来源于stack exchange,提问作者Col1ns
相关产品推荐
相关产品推荐

