Ошибка большого двоичного объекта Azure: указанный большой двоичный объект не существует, но большой двоичный объект присутствует

У меня возникла ошибка после запуска моей лазурной функции, которая используется для чтения лазурного хранилища больших двоичных объектов.

Ошибка

      ID 0dad768d-36d4-4c1a-85ae-2a5122533b3c
fail: Function.processor.User[0]
      Traceback (most recent call last):
        File "/usr/local/lib/python3.8/site-packages/azure/storage/blob/_download.py", line 360, in _initial_request
          location_mode, response = self._clients.blob.download(
        File "/usr/local/lib/python3.8/site-packages/azure/storage/blob/_generated/operations/_blob_operations.py", line 186, in download
          map_error(status_code=response.status_code, response=response, error_map=error_map)
        File "/usr/local/lib/python3.8/site-packages/azure/core/exceptions.py", line 102, in map_error
          raise error
      azure.core.exceptions.ResourceNotFoundError: Operation returned an invalid status 'The specified blob does not exist.'
  

Мой код Python для доступа к файлу

from azure.storage.filedatalake import DataLakeFileClient  

def get_file(self, file_path: str) -> Union[str, bytes, bytearray]:
    """Retrieve the file content of a file stored in the Data Lake
    
    Args:
        file_path (str): The path to the file
    
    Returns:
        Union[str, bytes, bytearray]: File content
    
    Raises:
        Exception: Description
    """

    try:
        file = DataLakeFileClient(
            account_url=self.account_url,
            credential=self.account_key,
            file_system_name=self.fs_name,
            file_path=file_path)
        return bytes(file.download_file().readall())
    except ResourceNotFoundError as e:
        raise Exception("No such file")

Кто-нибудь знает, что это за решение

BLOB

снимок экрана


datalake - это blob


person galiylama    schedule 26.03.2021    source источник
comment
И код выглядит неполным.   -  person Bowman Zhu    schedule 26.03.2021
comment
отредактировал содержание   -  person galiylama    schedule 26.03.2021
comment
На скриншоте показан каталог, в нем есть blob?   -  person Bowman Zhu    schedule 26.03.2021
comment
datalake - это blob   -  person galiylama    schedule 26.03.2021
comment
Можете ли вы прочитать содержимое большого двоичного объекта по предоставленному мной коду?   -  person Bowman Zhu    schedule 26.03.2021
comment
Это снимок экрана с моей стороны. Кажется, он отличается от твоего. Как создать каплю?   -  person Bowman Zhu    schedule 26.03.2021
comment
@BowmanZhu. Создано через лазурный портал   -  person galiylama    schedule 26.03.2021


Ответы (1)


введите описание изображения здесь

Пример кода (убедитесь, что "myfile" существует.):

from azure.storage.filedatalake import DataLakeServiceClient 
connect_str = "DefaultEndpointsProtocol=https;AccountName=0730bowmanwindow;AccountKey=xxxxxx;EndpointSuffix=core.windows.net"
datalake_service_client = DataLakeServiceClient.from_connection_string(connect_str)
myfilesystem = "test"
myfolder     = "test"
myfile       = "FileName.txt"

file_system_client = datalake_service_client.get_file_system_client(myfilesystem)            
directory_client = file_system_client.create_directory(myfolder)         
directory_client = file_system_client.get_directory_client(myfolder)

file_client = directory_client.get_file_client(myfile)
print(file_client.download_file().readall())
person Bowman Zhu    schedule 26.03.2021
comment
@galiylama Можете попробовать посмотреть, есть ли ошибки на этом основании. - person Bowman Zhu; 26.03.2021
comment
file_system_client.create_directory (myfolder) это необходимо. папка уже существует? - person galiylama; 26.03.2021
comment
в этом методе datalake_service_client = DataLakeServiceClient.from_connection_string (connect_str) путь к файлу и файловая система должны определять - person galiylama; 26.03.2021
comment
@galiylama create_directory не нужно создавать папку вручную. - person Bowman Zhu; 26.03.2021
comment
@galiylama from_connection_string создает ссылку на datalake. Следующие два шага - определение файловой системы, папки и имени большого двоичного объекта. - person Bowman Zhu; 26.03.2021
comment
получил ошибку объект datalake_service_client не имеет атрибута get_file_system_client. - person galiylama; 26.03.2021
comment
@galiylama Это официальный справочник по API. Вы можете получить от него все, и вы найдете в нем get_file_system_client. :) - person Bowman Zhu; 26.03.2021
comment
@galiylama Есть обновления? - person Bowman Zhu; 30.03.2021
comment
Нет. Все та же ошибка - person galiylama; 30.03.2021
comment
@galiylama Все еще получаете has no attribute 'get_file_system_client'.? - person Bowman Zhu; 30.03.2021
comment
да. такого расширения не найдено get_file_system_client - person galiylama; 30.03.2021
comment
я принимаю твой ответ. Но все еще не работает мое решение - person galiylama; 30.03.2021
comment
@galiylama Какой пакет вы установили? - person Bowman Zhu; 30.03.2021
comment
@galiylama Это официальный учебники datalake для языка Python, возможно, вы можете создать виртуальную среду на локальном компьютере (например, виртуальную среду conda или python), переустановить пакет и повторить попытку. - person Bowman Zhu; 30.03.2021
comment
в файле требований azure-storage-file-datalake - person galiylama; 30.03.2021