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

Spark SQL如何精简获取表与视图的COMMENT注释信息

Spark 精简获取表/视图COMMENT注释方案

我们可以在创建Spark表或视图时添加用于描述的COMMENT注释,示例来自Spark官方文档:

CREATE TABLE student (id INT, name STRING, age INT) USING CSV
    COMMENT 'this is a comment'
    TBLPROPERTIES ('foo'='bar');

核心需求

以精简格式获取上述注释:

精简格式指返回结果仅(或几乎仅)包含表名和对应的表描述注释,不返回冗余的列类型、其他表属性等无关信息,效果类似SHOW TABLES/SHOW VIEWS返回结构,仅额外增加注释字段列。

已验证无效的命令

以下命令经测试无法满足精简获取注释的需求:

DESCRIBE student
DESCRIBE EXTENDED student
SHOW CREATE TABLE student
DESCRIBE DETAIL student -- 仅Databricks环境支持
SHOW VIEWS FROM default -- 不返回视图描述字段
SHOW TABLES FROM default -- 不返回表描述字段

可行方案

  • 开箱即用方案(Spark 3.3及以上版本)
    Spark 3.3版本开始原生支持扩展SHOW TABLES/SHOW VIEWS的返回字段,执行时添加EXTENDED关键字即可直接拿到注释:
    -- 获取指定库下所有表及对应注释
    SHOW TABLES EXTENDED FROM <你的库名>;
    -- 获取指定库下所有视图及对应注释
    SHOW VIEWS EXTENDED FROM <你的库名>;
    
    返回结果包含命名空间、表/视图名、是否临时表、注释四个字段,无多余冗余信息,完全匹配需求。
  • 低版本兼容方案(Spark 2.x/3.0~3.2)
    低版本Spark可直接查询内置元数据的information_schema.tables视图提取注释,返回结构同样精简:
    SELECT
      table_name,
      comment
    FROM information_schema.tables
    WHERE table_schema = '<你的库名>'
      -- 查普通表保留下方条件,查视图替换为 table_type = 'VIEW'
      AND table_type = 'BASE TABLE';
    
    如果需要获取会话级临时视图的注释(临时视图元数据不会持久化到information_schema),可通过Spark Catalog API在代码侧查询,Scala实现示例:
    val spark = org.apache.spark.sql.SparkSession.active
    // 替换为目标库名,临时视图传空字符串即可
    spark.catalog.listTables("<你的库名>")
      .select("name", "description")
      .show()
    

内容的提问来源于stack exchange,提问作者YFl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:51:16