我正在尝试连接到通过我的 Databricks Notebook 中的专用终结点启用的 Azure DataLake 2/存储帐户,但出现错误:
Caused by: StorageException: This Request is not Authorized to Perform this operation.
我尝试在防火墙 IP 列表中添加 Databricks IP 地址(在与 Databricks 相连的网络接口(interface)/VNET 中找到,但不确定是否是那个),以同时列出来自本地的请求。但遇到同样的错误。有没有办法通过这样的配置建立连接?
最佳答案
我创建了与您相同的环境,并尝试在 Databricks 笔记本中安装存储帐户,但收到了相同的错误“未经授权”。
解决方案:
由于我们已经创建了具有专用终结点的存储帐户,因此默认设置有防火墙。因此,为了解决这个问题,我们需要在其中设置 databrick 使用的 vnet 和子网,如下所示。
因此,当我挂载存储帐户时,它会成功挂载。
但要再次从文件夹中读取文件,您必须管理容器和文件的 ACL。
之后你可以得到以下输出:
通过右键单击需要从 Databricks 笔记本读取的文件,也可以对文件执行相同的操作。
向文件添加访问控制后,您可以在 Databricks 中测试它:
注意:我已使用服务主体(即 ADLStest)来使用 Databricks 中的 ADLS gen2 存储帐户。该服务主体应分配有“存储 Blob 数据贡献者”角色。并且管理 ACL 应该仅针对该服务主体完成。
引用:
Access Azure Data Lake Storage Gen2 using OAuth 2.0 with an Azure service principal
Mount an Azure Data Lake Storage Gen2 Account in Databricks (mssqltips.com)
关于azure - 是否可以使用 Databricks 的专用终结点连接到 Azure 存储帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68943377/