无法在databricks中使用sas token + abfs访问azure存储,但可以使用sas token + wasb

问题描述 投票:0回答:1

背景:
在我现在正在工作的项目中,我们有 stg 和 prod databricks 工作区。 在 stg databricks 工作区中,有一个 databricks 作业需要访问 prod azure blob 存储中的一些 json 文件以进行某些数据管道操作,并且管道的输出需要写入 stg azure blob 存储。 因此,我尝试生成两个 sas 令牌用于 blob 身份验证。一个用于 stg blob,另一个用于 prod blob。我们使用的两个 Azure 存储都是 ADLS Gen2

问题:
我参考此处的doc来设置我的 sas 凭据。问题是我在尝试使用 stg databricks 中的 abfs + sas 读取 prod blob 中的 json

(spark.read.json("abfss://<container>@<account_name>.dfs.core.windows.net/<blob_path>"))
时遇到 403 问题,但它在 wasb + sas 中工作,并且我使用相同的配置代码在 prod databricks 中测试 wasb 和 abfs 都可以工作很好。

我认为我的 sas 令牌和配置应该很好,因为 abfs 和 wasb 驱动程序都可以在 prod 中工作,并且可以在 stg 中与 wasb 一起工作,但这让我感到困惑,为什么 abfs 不能在 stg 中工作?我知道 prod blob 有一些防火墙设置,但由于我作为开发人员无法访问我们的 prod azure 门户,所以我不知道详细信息。

想知道 wasb 是否可以忽略防火墙设置或其他什么?我看过一些类似 this 的帖子,似乎有类似的问题,但我们不使用 Synapse 或尝试在 databricks 中挂载 blob 只是想读取 blob 中的 json。

如有任何意见和建议,我们将不胜感激。

azure apache-spark azure-blob-storage databricks
1个回答
0
投票

您需要在ADLS Gen 2防火墙设置中将 STG Databricks 工作区的现有 IP 地址列入白名单。

enter image description here

或者,

您可以使用自己的 V-Net 部署工作区,然后在存储帐户防火墙中添加公共子网。

此外,无论哪种方式,您都需要权限,因此请与生产环境团队联系以启用您的工作区的权限。

如果您已经拥有权限,只需添加现有工人的 V-Net,如上面的屏幕截图所示。

请关注解决方案以获取更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.