Azure数据湖第2代-验证上传的文件(MD5?)

时间:2020-05-03 20:57:24

标签: azure rest azure-data-lake azure-data-lake-gen2

我需要验证上传到ADLG2的文件,但找不到合适的方法...

有一个ContentMD5属性,但我看不到为什么要对其进行更改或更新

即使我尝试获取文件的HEAD,该属性也不存在 HEAD headers response (即使该属性在Storage Explorer中也存在) Property list in Storage Explorer

有什么理由要在Azure方面自动生成它?或其他不同的方式来验证文件? (我不想上传文件然后下载并进行比较)

1 个答案:

答案 0 :(得分:1)

使用REST API:

将文件上传到Azure Data Lake时,需要3个步骤

  1. 放入->在ADL中的正确位置创建文件
  2. 补丁-> action = append,您将数据添加到Blob
  3. 补丁-> action = flush,您保存了斑点

要确认您已添加了第2阶段中的所有数据,

在标头中添加“ Content-MD5”,并在base64中编码MD5哈希

payload = "hello"
headers = {
'Content-Length': '5',
'Content-MD5': 'XUFAKrxLKna5cZ2REBfFkg==',
'Content-Type': 'text/plain'
}
  • 如果一切正常,您将收到状态:202
  • 如果MD5错误,您将收到状态400-请求中指定的MD5值与服务器计算的MD5值不符

之后,您要将MD5添加到文件(blob)属性“ ContentMD5” 您需要做的是将md5 base64值添加到标头“ x-ms-content-md5”,以便下次读取文件时可以验证内容

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