#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:
Ниже приведен простой пример кода:
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
)
Оригинальный ответ:
Я думаю, что приведенный ниже документ поможет вам:
Как читать:
Как написать:
Кстати, не используйте привязку вывода blob. Чтение может быть достигнуто с помощью привязки, но запись невозможна.(Служба хранения больших двоичных объектов и служба передачи данных основаны на разных объектах. Хотя использование привязки ввода больших двоичных объектов для чтения файлов вполне нормально, пожалуйста, не используйте привязку вывода больших двоичных объектов для записи файлов, поскольку она не создает объект на основе службы передачи данных.)
Дайте мне знать, может ли вам помочь приведенный выше документ, если нет, я обновлю простой пример python.
Комментарии:
1. Спасибо за ссылки. Не могли бы вы предоставить пример кода python для привязки ввода (blob) и привязки вывода (adl)?