Azure Delta表注释缺失:如何提取表注释?
提取Azure Databricks中Delta表的表注释问题解决
问题场景
你创建了带表注释的外部Delta表,SQL语句如下:
DROP TABLE IF EXISTS dbtest.test_antony; CREATE TABLE IF NOT EXISTS dbtest.test_antony( db_name STRING COMMENT 'EN: Database Name ', table_name STRING COMMENT 'EN: Table Name ' ) USING delta LOCATION 'dbfs:/mnt/user/antony/test_antony' COMMENT 'my test table'
但使用describe系列语句、SHOW CREATE TABLE都无法找到表注释my test table,集群版本10.4和11.2均存在此问题。
原因分析
当使用LOCATION指定外部路径创建Delta表时,表级注释不会写入Hive元数据的常规字段,而是存储在Delta Lake的事务日志或表属性中,导致常规查询语句无法直接获取。
解决方法
方法1:使用SHOW TBLPROPERTIES查询
直接查询表的comment属性:
SHOW TBLPROPERTIES dbtest.test_antony ('comment');
或者查看所有表属性(包含注释):
SHOW TBLPROPERTIES dbtest.test_antony;
执行后会返回comment对应的my test table值。
方法2:通过Delta Lake API读取(Python)
利用Delta Lake的官方API直接读取表的元数据:
from delta.tables import DeltaTable # 从路径加载Delta表 delta_table = DeltaTable.forPath(spark, "dbfs:/mnt/user/antony/test_antony") # 获取表注释 table_comment = delta_table.detail().select("description").collect()[0][0] print(table_comment)
运行这段代码会输出表的注释内容。
补充说明
如果创建的是内部Delta表(不指定LOCATION),使用DESCRIBE TABLE EXTENDED dbtest.test_antony即可在结果中找到表注释,但外部表必须使用上述两种方法。
内容的提问来源于stack exchange,提问作者Antony
相关产品推荐
相关产品推荐

