You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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}
  • 认证方式:请求头携带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=你的访问令牌
  • 连接成功后,即可在工具中直观查看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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 18:18:25