Azure data lake gen2 -Валидация загруженного файла (MD5?) - PullRequest
0 голосов
/ 03 мая 2020

Мне нужно проверить файлы, которые я загружаю в ADLG2, и не могу найти хороший способ ...

Существует свойство ContentMD5, но я не вижу причин для его изменения или обновления

даже когда я пытаюсь получить HEAD для файла, свойство не существует Ответ заголовков HEAD (даже если в Storage Explorer свойство существует) Список свойств в Storage Explorer

Есть ли необходимость автоматически генерировать его на стороне Azure? или какой-то другой способ проверить файл? (Я не хочу загружать файл, затем загружать его и сравнивать)

1 Ответ

0 голосов
/ 04 мая 2020

Используя REST API:

когда вы загружаете файл в azure озеро данных, вы делаете это в 3 шага

  1. Поместите -> создайте файл в нужном месте в ADL
  2. Patch -> action = append, вы добавляете свои данные в blob
  3. Patch -> action = flu sh, вы сохраняете blob

чтобы подтвердить, что вы добавили все данные на этапе 2, вам нужно

добавить «Content-MD5» в заголовок с MD5 га sh, закодированным в base64

payload = "hello"
headers = {
'Content-Length': '5',
'Content-MD5': 'XUFAKrxLKna5cZ2REBfFkg==',
'Content-Type': 'text/plain'
}
  • в если все в порядке, вы получите статус: 202
  • если значение MD5 неверно, вы получите статус 400 - значение MD5, указанное в запросе, не совпадает со значением MD5, вычисленным сервером

после этого вы хотите добавить MD5 к свойству файла (blob) «ContentMD5», что вам нужно сделать, это добавить в заголовок «x-ms-content-md5» значение md5 base64 в следующий раз когда вы читаете файл, вы можете проверить содержание

payload = {}
headers = {
'x-ms-content-md5': 'XUFAKrxLKna5cZ2REBfFkg=='
}
...