如何通过 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 install azure-storage --upgrade 并再次尝试使用 import 语句 如果答案对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢 好的,感谢@ShrutiJoshi-MT 的合作,绝对对我很有帮助。

以上是关于如何通过 python 将 JSON 数据附加到存储在 Azure blob 存储中的现有 JSON 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地启动 Azure 功能并通过 launch.json 和 tasks.json 将调试器附加到动态处理?

无法在 python pandas 数据框中附加嵌套的 JSON 值

在python中附加带有json数据的文本文件

如何以附加模式导出 DataFrame to_json - Python Pandas?

如何将下一级json数据附加到树视图结构中

Python - 将 JSON 对象传递给函数时附加到 JSON 对象的附加“成员”