【问题标题】:How can I append JSON data to an existing JSON file stored in Azure blob storage through python?如何通过 python 将 JSON 数据附加到存储在 Azure blob 存储中的现有 JSON 文件?
【发布时间】: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 时,它会出现身份验证问题。
  • 你能用你试过的代码编辑问题吗?

标签: python json azure azure-blob-storage azure-python-sdk


【解决方案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 的合作,绝对对我很有帮助。
猜你喜欢
  • 2020-04-03
  • 2019-04-18
  • 2021-05-07
  • 1970-01-01
  • 2022-12-16
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 2018-05-07
相关资源
最近更新 更多