Azure Synapse Studio中Dedicated SQL Pool不显示已创建数据对象问题咨询
核心原因
你遇到的问题本质是Synapse内部不同计算引擎的元数据默认隔离,你并没有把数据库和表实际创建在Dedicated SQL Pool中:
- 你执行的
%%pyspark开头的代码是运行在Spark池上的,通过Spark SQL创建的nyctaxi库、nyctaxi.trip表默认归属Spark元存储,只会自动同步给Serverless SQL池,完全不会写入到Dedicated SQL Pool的存储和元数据中。Dedicated SQL Pool是独立的计算+存储资源,和Spark池、Serverless SQL池的元数据天然不互通。 - 你后续创建的
NYCTaxiTripSmall表如果也是通过Spark或者Serverless SQL池操作的,同样不会自动同步到Dedicated SQL Pool中。 - 界面显示红叉还有一种次要可能性:你当前登录Synapse Studio的账号没有分配Dedicated SQL Pool的对应访问权限(比如没有
db_datareader、VIEW DEFINITION权限),就算Dedicated中存在对象也无法加载展示。
为什么Serverless SQL Pool的对象可以正常显示
Spark池和Serverless SQL池默认共享同一套元数据,你在教程2中直接用Serverless SQL池创建的DataExplorationDB本身就是Serverless的自有对象,自然可以正常加载展示。
解决方法
如果需要在Dedicated SQL Pool中看到对应的表,需要显式将数据写入Dedicated SQL Pool:
你可以使用Spark的Synapse SQL连接器将现有DataFrame写入Dedicated SQL Pool,示例代码如下:
%%pyspark # 替换尖括号内的内容为你的实际工作区、Dedicated池信息 df.write \ .format("com.databricks.spark.sqldw") \ .option("url", "jdbc:sqlserver://<你的Synapse工作区名>.sql.azuresynapse.net:1433;database=<你的Dedicated SQL池名>;user=<管理员账号>;password=<账号密码>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.sql.azuresynapse.net;loginTimeout=30;") \ .option("dbtable", "nyctaxi.trip") \ .mode("overwrite") \ .save()
也可以直接打开Dedicated SQL Pool的查询窗口,执行SQL语句手动创建库、表并导入数据。
内容的提问来源于stack exchange,提问作者nam
相关产品推荐
相关产品推荐

