Databricks 写回 azure 突触错误

问题描述

以下是我的代码

df.write \
  .format("com.databricks.spark.sqldw") \
  .option("url","jdbc:sqlserver://**********.sql.azuresynapse.net:1433;database=********") \
  .option("user","sqladminuser")\
 .option("password","***********") \
.option("forwardSparkAzureStorageCredentials","true") \
  .option("dbTable","dbo.testingoutfromdatabricks") \
  .option("tableOptions","CLUSTERED COLUMNSTORE INDEX,disTRIBUTION = HASH (_c0)") \
  .option("tempDir","abfss://********@**********.dfs.core.windows.net/tempfolder/") \
  .save()

我收到以下错误

无法验证外部位置,因为远程服务器返回错误:(403) Forbidden。 [错误代码 = 105215] [sqlState = S0001]

从 Azure 突触 sql 池,我使用来自同一个 blob 存储的 copY 命令,并成功加载表......有人遇到上述错误吗?

解决方法

要解决此问题,请确保在尝试访问受保护的 Azure 存储时必须使用托管服务标识。

Storage Blob Data Contributor 角色分配给 Azure Synapse Analytics 服务器的托管标识。

有关详细信息,请参阅 Write Data from Azure Databricks to Azure Dedicated SQL Pool(formerly SQL DW) using ADLS Gen 2