Привязка функций Azure к озеру данных Azure (python)

#python #azure #azure-functions #azure-data-lake

#python #azure #azure-функции #azure-data-lake

Вопрос:

У меня есть требование, например, я хочу подключиться к моему озеру данных Azure v2 (ADLS) из функций Azure, прочитать файл, обработать его с помощью python (pyspark) и снова записать его в озеро данных Azure. Таким образом, моя привязка ввода и вывода будет связана с ADL. Существует ли какая-либо привязка ADLS для функции Azure в python? Может ли кто-нибудь дать какие-либо предложения по этому поводу?

Спасибо, заранее

Ответ №1:

Обновить:

1, Когда мы считываем данные, мы можем использовать привязку ввода больших двоичных объектов.

2, Но когда мы записываем данные, мы не можем использовать привязку вывода больших двоичных объектов.(Это связано с тем, что объект отличается.) И функция azure не поддерживает привязку вывода ADLS, поэтому нам нужно поместить логический код в тело функции, когда мы хотим написать код.

Это документ о том, какую привязку может поддерживать эта функция Azure:

https://learn.microsoft.com/en-us/azure/azure-functions/functions-triggers-bindings?tabs=csharp#supported-bindings

Ниже приведен простой пример кода:

 import logging

import azure.functions as func
from azure.storage.filedatalake import DataLakeServiceClient

def main(req: func.HttpRequest, inputblob: func.InputStream) -> func.HttpResponse:
    connect_str = "DefaultEndpointsProtocol=https;AccountName=0730bowmanwindow;AccountKey=xxxxxx;EndpointSuffix=core.windows.net"
    datalake_service_client = DataLakeServiceClient.from_connection_string(connect_str)
    myfilesystem = "test"
    myfile       = "FileName.txt"
    file_system_client = datalake_service_client.get_file_system_client(myfilesystem)    
    file_client = file_system_client.create_file(myfile)
    inputstr = inputblob.read().decode("utf-8")
    print("length of data is " str(len(inputstr)))
    filesize_previous = 0
    print("length of currentfile is " str(filesize_previous))
    file_client.append_data(inputstr, offset=filesize_previous, length=len(inputstr))
    file_client.flush_data(filesize_previous len(inputstr))
    return func.HttpResponse(
            "This is a test." inputstr,
            status_code=200
    )
  

Оригинальный ответ:

Я думаю, что приведенный ниже документ поможет вам:

Как читать:

https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-input?tabs=csharp

Как написать:

https://learn.microsoft.com/en-us/python/api/azure-storage-file-datalake/azure.storage .filedatalake.datalakeserviceclient?view=azure-python

Кстати, не используйте привязку вывода blob. Чтение может быть достигнуто с помощью привязки, но запись невозможна.(Служба хранения больших двоичных объектов и служба передачи данных основаны на разных объектах. Хотя использование привязки ввода больших двоичных объектов для чтения файлов вполне нормально, пожалуйста, не используйте привязку вывода больших двоичных объектов для записи файлов, поскольку она не создает объект на основе службы передачи данных.)

Дайте мне знать, может ли вам помочь приведенный выше документ, если нет, я обновлю простой пример python.

Комментарии:

1. Спасибо за ссылки. Не могли бы вы предоставить пример кода python для привязки ввода (blob) и привязки вывода (adl)?