azure - 使用突触笔记本中的多个链接服务在多个路径中读取/写入一个 azure gen2 存储帐户中的数据
问题描述
使用突触笔记本中的多个链接服务在多个路径中读取/写入一个 azure gen2 存储帐户中的数据。我们无法使用单个链接服务读取,因为我们有多个 SPN 可以访问所有路径。
我遵循的实现相同的步骤 1. 使用不同的 SPN1 创建指向 gen2 存储的多重链接服务,SPN2
linked_service_name = 'ln_spn1_path_1' spark.conf.set('spark.storage.synapse.linkedServiceName',linked_service_name) spark.conf .set('fs.azure.account.oauth.provider.type','com.microsoft.azure.synapse.tokenlibrary.LinkedServiceBasedTokenProvider')
使用 spn 2 创建链接服务 ln_spn2_path_2 并指向 path2
**linked_service_name = 'ln_spn2_path_2' spark.conf.set('spark.storage.synapse.linkedServiceName',linked_service_name) spark.conf.set('fs.azure.account.oauth.provider.type','com.microsoft. azure.synapse.tokenlibrary.LinkedServiceBasedTokenProvider')
mssparkutils.fs.ls("abfss://container@storaegaccount.dfs.core.windows.net/path2")**
如果以上两个commands都在同一个突触笔记本中运行,那么我们将得到以下错误,我们稍后再运行
Py4JJavaError:调用 z:mssparkutils.fs.ls 时出错。: java.nio.file.AccessDeniedException: Operation failed: "This request is not authorized to perform this operation using this permission.", 403, GET, AuthorizationPermissionMismatch, "This request is not authorized to perform this operation using this permission. RequestId: 8853fd20-001f-0018-0347-bf3712000000 时间:2021-10-12T08:57:13.0513182Z"
我们可以使用同一笔记本中的不同链接服务读取数据吗?
解决方案
更新:我在突触笔记本中使用多个链接服务在多个路径中测试了 azure gen2 存储帐户。
链接服务:ADLSGen2_chepra 与名为 Linked_service_name 的笔记本
链接服务:AzureDataLakeStorage_chepragen2 与名为 Linked_service_name 的笔记本
注意:存储 Blob 数据贡献者:用于授予对 Blob 存储资源的读/写/删除权限。
如果您没有将“存储 Blob 数据贡献者”分配给其他突触用户,他们将无法访问来自 ADLS gen2 的数据,因为缺少存储帐户的权限。
如果他们尝试在存储帐户上没有“存储 Blob 数据参与者”角色的情况下从 ADLS gen2 访问数据,他们将收到以下错误消息:
Py4JJavaError: An error occurred while calling z:mssparkutils.fs.ls. : java.nio.file.AccessDeniedException: Operation failed: "This request is not authorized to perform this operation using this permission.", 403
参考:向工作区托管标识授予权限。
推荐阅读
- r - 制作“可绘制”反应贴图
- c - Linked List 包含另一个链表,嵌套链表
- google-cloud-platform - 'projects/$project_id/regions/us-central1 所需的 'compute.regions.get' 权限
- sql-server - 如何在 Order by 子句中使用计算别名?
- cors - 对 Tomcat 服务器进行 API 调用时如何修复“被 CORS 策略阻止”错误
- vue-cli - Vue-cli 运行构建 TypeError 'name' 未定义
- reactjs - 如何在反应中使用钩子路由器获取当前的url路径?
- java - 当 String 值为动态时处理 ArrayIndexBoundsOfException
- react-native - 持久补液后记录用户
- javascript - 出现错误 ValidatorError: Path `id` is required。在 mongo 数据库中