【问题标题】:Write data to Azure Data Lake Storage Gen 2 using Azure Synapse Analytics notebook使用 Azure Synapse Analytics 笔记本将数据写入 Azure Data Lake Storage Gen2
【发布时间】:2021-11-10 22:56:09
【问题描述】:

我正在使用 Azure Synapse Analytics 笔记本连接到 RESTful api,并将 json 文件写入 Azure Data Lake Storage Gen 2。

pyspark 代码:

import requests
response = requests.get('https://api.web.com/v1/data.json')
data = response.json()
from pyspark.sql import *
df = spark.read.json(sc.parallelize([data]))
from pyspark.sql.types import *
account_name = "name of account"
container_name = "name of container"
relative_path = "name of file path"    #abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>
adls_path = 'abfss://%s@%s.dfs.core.windows.net/%s' % (container_name, account_name, relative_path)
spark.conf.set('fs.%s@%s.dfs.core.windows.net/%s' % (container_name, account_name), "account_key") #not sure I'm doing the configuration right
df.write.mode("overwrite").json(adls_path)

错误:

Py4JJavaError : An error occurred while calling o536.json.
: Operation failed: "This request is not authorized to perform this operation.", 403, HEAD, https://storageaccount.dfs.core.windows.net/container/?upn=false&action=getAccessControl&timeout=90

【问题讨论】:

  • 您有 Storage Blob Data Contributor 权限吗?您的问题与微软论坛上的this讨论有关
  • 嗨@Kafels,我确实有存储 Blob 数据贡献者权限,但仍然遇到此错误。

标签: apache-spark pyspark azure-synapse


【解决方案1】:

注意:Storage Blob Data Contributor:用于授予对 Blob 存储资源的读/写/删除权限。

如果您没有将存储 Blob 数据贡献者分配给正在访问存储帐户的用户,他们将无法访问来自 ADLS gen2 的数据,因为缺少对存储帐户的权限。

如果他们尝试在存储帐户上没有“Storage Blob Data Contributor”角色的情况下从 ADLS gen2 访问数据,他们将收到错误消息:Operation failed: "This request is not authorized to perform this operation.",403.

创建存储帐户后,从左侧导航中选择访问控制 (IAM)。然后分配以下角色或确保它们已分配。 将自己分配给存储帐户的存储 Blob 数据所有者角色。

在存储帐户上授予Storage Blob Data Contributor 角色后,等待5-10 分钟,然后重试该操作。

【讨论】:

  • 嗨@CHEEKATLAPRADEEP-MSFT,我确实具有存储 Blob 数据贡献者角色,但不确定为什么会遇到此错误。
  • @Kafels,在将角色更改为存储 Blob 数据所有者后,我能够让它工作。试图找出原因。
  • 嗨@paone 你有没有找出这里的根本原因?在笔记本内部,数据写入正确,但是一旦我通过管道运行 Spark 笔记本,它就没有,我尝试将 Synapse 工作区添加为存储帐户和 ACL 上的数据贡献者和所有者
  • 嗨@Rodney,我无法找到根本原因。除了我做了有限的故障排除之外,我不知道为什么,部分原因是 Azure 管理员很忙。
  • 好的,谢谢。我想我可能有一个稍微不同的问题,因为我们在托管资源组中进行部署
猜你喜欢
  • 2020-11-22
  • 2019-09-10
  • 1970-01-01
  • 2021-10-02
  • 2020-01-13
  • 2019-12-02
  • 1970-01-01
  • 2020-05-03
  • 2019-07-10
相关资源
最近更新 更多