操作失败:“此请求未被授权执行此操作,”在Synapse with a Pyspark Notebook中

mbzjlibv  于 2024-01-06  发布在  Spark
关注(0)|答案(2)|浏览(213)

我尝试执行以下命令行:

  1. mssparkutils.fs.ls("abfss://[email protected]/myfolder/")

字符串
我得到错误:

  1. Py4JJavaError: An error occurred while calling z:mssparkutils.fs.ls.
  2. : java.nio.file.AccessDeniedException: Operation failed: "This request is not authorized to perform this operation.", 403, GET, https://myadfs.dfs.core.windows.net/mycontainer?upn=false&resource=filesystem&maxResults=5000&directory=myfolder&timeout=90&recursive=false, AuthorizationFailure, "This request is not authorized to perform this operation.


我遵循了此链接中描述的步骤
通过在容器或文件系统级别授予我和我的Synapse工作区“Storage Blob Data Contributor”角色的访问权限:


的数据


即使这样,我仍然得到这个持久性错误。我错过了其他步骤吗?

zvms9eto

zvms9eto1#

我在我的环境中得到了同样的错误。我只是按照这个official document并做了复制,现在它对我来说工作正常。你可以按照下面的代码,它会解决你的问题。

示例代码:

  1. from pyspark.sql import SparkSession
  2. account_name = 'your_blob_name'
  3. container_name = 'your_container_name'
  4. relative_path = 'your_folder path'
  5. linked_service_name = 'Your_linked_service_name'
  6. sas_token = mssparkutils.credentials.getConnectionStringOrCreds(linked_service_name)

字符串


的数据

访问Blob存储

  1. path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (container_name,account_name,relative_path)
  2. spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net' % (container_name,account_name),sas_token)
  3. print('Remote blob path: ' + path)


输出示例:


更新答案
在pyspark notebook中配置Spark的参考:

https://techcommunity.microsoft.com/t5/azure-synapse-analytics-blog/notebook-this-request-is-not-authorized-to-perform-this/ba-p/1712566

展开查看全部
vlurs2pr

vlurs2pr2#

另一种可能性是,您在包含数据湖/Blob容器的存储帐户上运行了存储防火墙。
据我所知,除非你在你的Synapse示例上启用了私有网络,否则没有办法解决这个问题--在这种情况下,你可以创建一个托管私有端点来启用Spark到Storage的网络路由。

相关问题