Подключите ADLS Gen2 к блокам данных, когда включен брандмауэр - PullRequest
0 голосов
/ 21 мая 2019

Когда я пытаюсь подключить ADLS Gen2 к блокам данных, у меня возникает такая проблема: «StatusDescription = Этот запрос не авторизован для выполнения этой операции», если включен брандмауэр ADLS Gen2. Но запрос работает нормально, если брандмауэр отключен.

Кто-нибудь может помочь, пожалуйста?

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)

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Если вы включите брандмауэр для учетной записи Azure Data Lake Store Gen2, эта конфигурация будет работать только с блоками данных Azure, если вы развернете блоки данных Azure в собственной виртуальной сети . Он не работает с рабочими пространствами, развернутыми без функции внедрения vnet. Для учетной записи хранения необходимо разрешить доступ из общедоступной подсети Databricks.

0 голосов
/ 24 мая 2019

Эта ошибка вызвана тем, что у участника службы нет разрешения на чтение / выполнение в пути к файлу, а не в брандмауэре.

К вашему сведению.В Storage Azure вы можете разрешить Microsoft Trusted Services доступ к ресурсу.Это включает в себя блоки данных.Но, как я уже сказал, я не верю, что у вас проблема с брандмауэром.

Чтобы решить проблему с разрешениями, я сначала посмотрю на роли IAM для файловой системы.На портале Azure перейдите к учетной записи хранения> FileSystems и откройте блейд Access Controls (IAM).С помощью экрана «Проверить доступ» вставьте Client / ApplicationID вашего субъекта службы и проверьте, какие разрешения у него есть.

Чтобы иметь доступ на чтение к файловой системе, SP должен иметь одну из следующих ролей: * Владелец * Хранилище данныхАвтор данных * Владелец данных хранилища BLOB-объектов * Считыватель данных хранилища BLOB-объектов

Любая из этих ролей предоставит полный доступ для чтения всех файлов в файловой системе.

Если нет, вы по-прежнему можете предоставлять разрешения для папки./ уровень файла с помощью Azure Storage Explorer.Помните, что все папки в цепочке должны иметь разрешение «Выполнить» на каждом уровне.Например:

/Root/SubFolder1/SubFolder2/file.csv

Вы должны предоставить Выполнить на Root, SubFolder1 и SubFolder2, а также Чтение на SubFolder2.

Дополнительные сведения: https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-access-control

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...