azure - Azure 数据湖 gen2 - 验证上传的文件(MD5?)
问题描述
我需要验证上传到 ADLG2 的文件,但找不到好方法...
有一个 ContentMD5 属性,但我看不出为什么要更改或更新它
即使我尝试获取文件的 HEAD,该属性也是不存在的 HEAD 标头响应 (即使在存储资源管理器中该属性存在) 存储资源管理器中的 属性列表
为什么要在 Azure 端自动生成它?或一些不同的方式来验证文件?(我不想上传文件然后下载并比较它们)
解决方案
使用 REST API:
当您将文件上传到 azure 数据湖时,您只需 3 个步骤即可完成
- 放置 -> 在 ADL 中的正确位置创建文件
- Patch -> action=append ,您将数据添加到 blob
- Patch -> 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=='
}
推荐阅读
- kotlin - Kotlin 集合:indexOfFirst 与 find
- apache-kafka - 使用来自主题的最新消息并忽略所有先前发布的消息
- php - 在 add_action 函数中使用参数
- contentful - 有没有办法获取内容类型的数据(下拉数据)?
- excel-formula - Excel Sum 函数 - 如果范围为空白,则返回单元格值
- c++ - 检查是否在 C++ 中使用 termux 或普通发行版
- wix - WIX customAction 复选框
- automation - Ansible 移动文件
- node.js - Office 365 的 Nodemailer 问题 [身份验证失败]
- c - 相同的程序在 Windows 上慢 10 倍