azure - 启用防火墙时将 ADLS Gen2 安装到 Databricks

标签 azure azure-data-lake azure-databricks

当我尝试将 ADLS Gen2 安装到 Databricks 时,如果启用了 ADLS Gen2 防火墙,则会遇到以下问题:“StatusDescription=此请求无权执行此操作”。但如果防火墙被禁用,该请求可以正常工作。

有人可以帮忙吗?

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": clientID,
               "fs.azure.account.oauth2.client.secret": keyID,
               "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/" + tenantID + "/oauth2/token"}

dbutils.fs.mount(
  source = "abfss://" + fileSystem + "@" + accountName + ".dfs.core.windows.net/",
  mount_point = "/mnt/adlsGen2",
  extra_configs = configs)

StatusCode=403
StatusDescription=This request is not authorized to perform this operation.
ErrorCode=
ErrorMessage=
    at shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.services.AbfsRestOperation.execute(AbfsRestOperation.java:134)
    at shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.services.AbfsClient.getAclStatus(AbfsClient.java:498)
    at shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.AzureBlobFileSystemStore.getIsNamespaceEnabled(AzureBlobFileSystemStore.java:164)
    at shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.AzureBlobFileSystemStore.getFileStatus(AzureBlobFileSystemStore.java:445)
    at shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem.getFileStatus(AzureBlobFileSystem.java:362)
    at com.databricks.backend.daemon.dbutils.DBUtilsCore.verifyAzureFileSystem(DBUtilsCore.scala:486)
    at com.databricks.backend.daemon.dbutils.DBUtilsCore.mount(DBUtilsCore.scala:435)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:380)
    at py4j.Gateway.invoke(Gateway.java:295)
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
    at py4j.commands.CallCommand.execute(CallCommand.java:79)
    at py4j.GatewayConnection.run(GatewayConnection.java:251)
    at java.lang.Thread.run(Thread.java:748)

最佳答案

如果在 Azure Data Lake Store Gen2 帐户上启用防火墙,则此配置仅适用于 Azure Databricks(如果您 deploy Azure Databricks in your own virtual network) 。它不适用于没有 vnet 注入(inject)功能的部署工作区。 在存储帐户上,您必须启用公共(public) Databricks 子网的访问。

关于azure - 启用防火墙时将 ADLS Gen2 安装到 Databricks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56240009/

相关文章:

azure - kubernetes 无法查看已挂载的文件夹内容

Azure函数无法获取blob容器

azure - 从 Azure Data Lake Gen 2 删除未刷新的文件

azure-storage - 看不到 ADLS Gen2 的 'Lifecycle management' 选项

azure - 使用 Azure Data Lake gen2 列出 blob 时出现问题

azure - 防止使用 azure databricks 在 azure SQL DB 中插入重复数据

azure - Databricks 笔记本因内存作业而崩溃

azure - 在同一区域的不同 Azure 应用服务中运行相同的自定义域

azure - B2C 自定义策略中未显示来自 REST API 调用的错误消息

pyspark - 与谓词下推相关的数据 block 分区