Python PermissionError при доступе к папке Azure Datalake - PullRequest
1 голос
/ 16 мая 2019

Я пытаюсь загрузить файлы из общей папки в папку Azure Datalake gen 1.

Сейчас я просто проверяю соединение и перечисляю папки в корневом каталоге:

adlCreds = lib.auth(tenant_id = tenant_id, client_secret = client_secret, client_id = client_id, resource = RESOURCE, azure_username = azure_username,azure_password=azure_password)

adls = core.AzureDLFileSystem(adlCreds, store_name=adlsAccountName)

print(adls.ls())

Это прекрасно работает, и я вижу все папки.

Но когда я пытаюсь получить доступ к одной из этих папок с помощью метода ls или метода ходьбы, я получаю эту ошибку:

Traceback (most recent call last):
  File "C:\Users\Python37-32\test_azure.py", line 46, in <module>
    print(adls.ls('/Test'))
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\core.py", line 164, in ls
    files = self._ls(path, invalidate_cache)
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\core.py", line 143, in _ls
    self.dirs[key] = self._ls_batched(key, batch_size=batch_size)
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\core.py", line 124, in _ls_batched
    ls_call_result = self.azure.call('LISTSTATUS', path, **parms)
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\lib.py", line 437, in call
    self.log_response_and_raise(response, PermissionError(path), level=exception_log_level)
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\lib.py", line 345, in log_response_and_raise
    raise exception
PermissionError: Test

Мне предоставлены права на чтение, запись и выполнение для корневого каталога и папки «Тест».

У вас есть идея, почему в доступе отказано?

СпасибоВы за свое время.

Ответы [ 2 ]

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

Добавить мой комментарий как ответ:

Ошибка была вызвана тем, что вы только что дали разрешение на root (добавьте в эту папку без всех дочерних элементов), вам также нужно предоставить разрешение для всех дочерних элементов, тогда оно будет работать.

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

В дополнение к разрешениям для папки и файлов X вам также необходимо разрешение «Выполнить (X)» для всех предков X.

Подробнее о разрешении на чтение файлов вы можете прочитать здесь

Разрешения, необходимые для чтения файла в этом документе здесь:

https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-access-control

...