如何通过 python 将 JSON 数据附加到存储在 Azure blob 存储中的现有 JSON 文件?
Posted
技术标签:
【中文标题】如何通过 python 将 JSON 数据附加到存储在 Azure blob 存储中的现有 JSON 文件?【英文标题】:How can I append JSON data to an existing JSON file stored in Azure blob storage through python? 【发布时间】:2022-01-15 01:35:14 【问题描述】:我一直在网上寻找将数据附加到 Azure 存储中现有 JSON 文件的方法,我还查看了 this 帖子,但没有帮助。我有数百万条实时 JSON 记录在 python 列表中可用,我想将这些 JSON 记录附加到 azure blob 中的现有 JSON 文件中。虽然我的主要数据源是 KafkaConsumer,但我正在使用来自 Kafka 主题的数据,并且我希望这些数据以 JSON 格式存储到 Azure 存储中。因为,我正在使用 python,我不想在我的本地硬盘上读/写,我只是想如果我有 JSON 记录列表,我可以直接附加到已经在 azure 容器中的 JSON 文件。 任何人都可以帮助我或提供一些参考,这对我来说会很高兴。谢谢
【问题讨论】:
你在使用附加 blob 吗? 一开始我只使用upload_blob函数上传JSON文件,然后我在这个JSON文件上尝试了append_block函数,但它给出了身份验证错误。 “错误代码:AuthenticationFailed 错误:无 AuthenticationErrorDetail:在 HTTP 请求 'hW87ugUtVXulSjA4ZpI6jc6vLU+tjj4KKM7/uWE2J6w=' 中找到的 MAC 签名与任何计算的签名不同。服务器使用以下字符串进行签名:'PUT 1043 application/octet-stream” 你是如何对 Azure 存储进行身份验证的? 我在创建连接时进行身份验证,在创建连接时没有出现任何问题。我只使用帐户 _url 和帐户密钥创建 BlobServiceClient 连接,此后我没有进行任何身份验证,但是当我附加到 blob 时,它会出现身份验证问题。 你能用你试过的代码编辑问题吗? 【参考方案1】:我尝试在我的系统中将数据附加到现有文件中,我将虚拟 json 数据用于测试目的,您可以传递您的 json 数据
from azure.storage.blob import AppendBlobService
import json
def append_data_to_blob(data):
service = AppendBlobService(account_name="appendblobex",
account_key="key")
data1 =
data1['hi'] = 'hello'
json_data = json.dumps(data1)
data = json.dumps(data1)
print(data1)
try:
service.append_blob_from_text(container_name="test", blob_name="test1", text = data)
except:
#To create the blob and append data
#service.create_blob(container_name="test", blob_name="test1")
service.append_blob_from_text(container_name="test", blob_name="test1", text = data)
print('Data Appended to Blob Successfully.')
append_data_to_blob("data")
输出
下载后添加到Azure存储文件中的数据打开文件并查看数据
【讨论】:
我无法导入 AppendBlobService,它显示 Module not found. 尝试使用 pip installazure-storage --upgrade
并再次尝试使用 import 语句
如果答案对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢
好的,感谢@ShrutiJoshi-MT 的合作,绝对对我很有帮助。以上是关于如何通过 python 将 JSON 数据附加到存储在 Azure blob 存储中的现有 JSON 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何在本地启动 Azure 功能并通过 launch.json 和 tasks.json 将调试器附加到动态处理?
无法在 python pandas 数据框中附加嵌套的 JSON 值