Synapse Notebook无法读写专用SQL池/ADLS2问题求助
解决Synapse迁移后Spark Notebook读写专用SQL池/ADLS2的临时路径报错问题
问题本质
执行display(product)报错是因为该操作需要将数据导出到Spark池配置的临时ADLS存储路径进行渲染,而print(product)仅输出Schema无需读写临时存储,因此核心问题是Spark池临时存储的配置缺失或权限不足——从错误路径abfss://config@.dfs.core.windows.net可明显看出存储账户名未正确指定。
具体解决步骤
检查Spark池临时存储配置
进入Synapse工作区的目标Spark池配置页,确认「临时存储账户」已指定有效的ADLS Gen2账户,容器(示例中为config)已创建。路径格式需为abfss://<容器名>@<存储账户名>.dfs.core.windows.net/,避免缺失账户名或多余斜杠。验证存储权限
确保Synapse工作区的托管服务身份(MSI)对该ADLS容器拥有「存储Blob数据参与者」权限;若使用服务主体(SP),需确认SP在存储账户IAM中配置了读写权限,且Spark池已正确引用该SP凭据。检查专用SQL池的外部数据权限
专用SQL池执行CREATE EXTERNAL TABLE AS SELECT时需访问临时存储,需确保SQL池的托管身份对该存储账户也具备读写权限,同时验证SQL池的外部数据源配置指向正确的ADLS路径。代码层面临时 workaround
若配置调整需时间,可在Notebook开头手动指定有效临时路径:spark.conf.set("spark.sqlanalytics.staging.dir", "abfss://<容器名>@<有效存储账户名>.dfs.core.windows.net/synapse/temp")需确保指定路径已存在且有权限。
内容的提问来源于stack exchange,提问作者AdamPeel84
相关产品推荐
相关产品推荐

