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

Azure Synapse:Notebook无法访问information_schema的问题

解决Azure Synapse Notebook中Spark SQL查询元数据的报错问题

错误原因

在Synapse专用SQL池中,dataverse_blob_blob是数据库,information_schema.tables是系统视图,所以原查询能正常运行。但Spark Notebook里的%%sql默认使用Spark SQL引擎,dataverse_blob_blob是外部数据源(比如链接Dataverse的Blob存储),并非Spark的catalog或schema,而Spark的spark_catalog只支持单部分命名空间,因此直接用dataverse_blob_blob.information_schema.tables会触发命名空间错误。

解决方法

方法1:切换到SQL池执行原查询

在%%sql中指定你的专用SQL池名称,让查询在SQL池环境中运行,和原逻辑完全一致:

%%sql -d 你的专用SQL池名称
SELECT Table_name FROM dataverse_blob_blob.information_schema.tables 
WHERE Table_name NOT LIKE '%_partitioned' 
ORDER BY 1

方法2:在Spark环境中获取并过滤表名

如果需要用Spark处理,直接通过Spark的元数据命令获取表列表再过滤:

Spark SQL方式:

%%sql
SELECT tableName 
FROM (SHOW TABLES IN dataverse_blob_blob) 
WHERE tableName NOT LIKE '%_partitioned'

PySpark代码方式:

# 获取外部数据源的所有表
tables = spark.catalog.listTables("dataverse_blob_blob")
# 过滤掉带_partitioned后缀的表
filtered_tables = [tbl.name for tbl in tables if not tbl.name.endswith("_partitioned")]
# 输出结果
for tbl in filtered_tables:
    print(tbl)

补充说明

为什么USE CATALOG/USE SCHEMA会报错?因为dataverse_blob_blob不是Spark的catalog(Spark默认catalog是spark_catalog,或者你创建的Lakehouse catalog),它是外部数据源,无法通过USE命令切换,只能用SHOW TABLES IN或spark.catalog访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:01:10