首页 > 解决方案 > 无法在数据块中为 adls gen 2 创建挂载点

问题描述

我正在尝试使用 databricks 中的密钥库创建指向 ADLS Gen2 的挂载点,但是由于遇到一些错误,我无法这样做。我有贡献者访问权限,我尝试使用存储 Blob 数据贡献者和贡献者对 SPN 的访问权限,但我仍然无法将其创建为挂载点。

我请求一些帮助

configs= {"fs.azure.account.auth.type":"OAuth",
       "fs.azure.account.oauth.provider.type":"org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
       "fs.azure.account.oauth2.client.id":"abcdefgh",
       "fs.azure.account.oauth2.client.secret":dbutils.secrets.get(scope="myscope",key="mykey"),
       "fs.azure.account.oauth2.client.endpoint":"https://login.microsoftonline.com/tenantid/oauth2/token",
       "fs.azure.createRemoteFileSystemDuringInitialization": "true"}

dbutils.fs.mount(
        source= "abfss://cont1@storageaccount.dfs.core.windows.net/",
        mount_point="/mnt/cont1",
        extra_configs=configs)

我得到的错误是调用 o280.mount 时发生错误。: HEAD https://storageaccount.dfs.core.windows.net/cont1?resource=filesystem&timeout=90 StatusCode=403 StatusDescription=此请求无权执行此操作。

标签: apache-sparkpysparkapache-spark-sqldatabricksazure-databricks

解决方案


执行将应用程序分配给角色中的步骤时,请确保您的用户帐户具有分配给它的存储 Blob 数据参与者角色。

重现:我已向服务主体提供所有者权限并尝试运行“<code>dbutils.fs.ls("mnt/azure/")”,返回与上述相同的错误消息。

在此处输入图像描述

解决方案:现在将存储 Blob 数据参与者角色分配给服务主体。

在此处输入图像描述

最后,在将存储 Blob 数据参与者角色分配给服务主体后,能够获得没有任何错误消息的输出。

在此处输入图像描述

有关更多详细信息,请参阅“<a href="https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-use-databricks-spark" rel="nofollow noreferrer">教程:Azure Data Lake Storage Gen2、Azure Databricks 和 Spark”。


推荐阅读