【问题标题】:Azure data lake gen2 -Validating uploaded file(MD5?)Azure 数据湖 gen2 - 验证上传的文件(MD5?)
【发布时间】:2025-12-23 18:45:12
【问题描述】:

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

有一个 ContentMD5 属性,但我不明白为什么要更改或更新它

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

为什么要在 Azure 端自动生成它?或一些不同的方式来验证文件? (我不想上传文件然后下载并比较它们)

【问题讨论】:

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


    【解决方案1】:

    使用 REST API:

    当您将文件上传到 azure 数据湖时,您只需 3 个步骤即可完成

    1. Put -> 在 ADL 的正确位置创建文件
    2. 补丁 -> action=append ,您将数据添加到 blob
    3. 补丁 -> action=flush ,你保存 blob

    验证您是否在第 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=='
    }
    

    【讨论】: