从Azure Blob存储读取XML文件

时间:2019-07-03 07:30:00

标签: python azure jupyter-notebook

我想读取存储在Jupyter笔记本中的Azure Blob存储中的XML文件(准确地说是PySpark3)。

我遇到了this tutorial-但是运气不好。

Basi,它抱怨说它无法从azure.storage行找到from azure.storage.blob import BlobService

我尝试过:

! pip install --user azure.storage 

没有运气。

有人可以帮忙吗?

  • 上面的内容在尝试安装时会引发语法错误
  • 否则,关于如何从Azure Blob存储中获取文件作为数据帧,有一些更清晰的说明供我使用吗?

任何指导表示赞赏。

谢谢。

1 个答案:

答案 0 :(得分:0)

有两种方法可以从Blob中获取xml内容。

解决方案1.通过Azure Storage Explorer获取带有sas令牌的blob URL,然后通过requests获取xml内容。

图1.1。右键单击a-sample.xml blob,然后单击选项Get Shared Access Signature

enter image description here

图1.2。选择选项UTC并启用Read权限,然后选择Create

enter image description here

图1.3。 Copy带有sas令牌的Blob网址。

enter image description here

图1.4。通过requests安装!pip install requests并获取xml内容。

enter image description here

import requests
resp = requests.get('<the blob url with sas token copied from Azure Storage Explorer>')
xml_content = resp.text
print(xml_content)

解决方案2。实际上,用于Python的Azure存储SDK名为azure-storage,因此您可以按照下图执行所需的操作。

图2.1。通过!pip install azure-storage安装Azure Python存储,并通过代码获取内容。请参考GitHub仓库Azure/azure-storage-python

enter image description here

from azure.storage.blob import BlockBlobService
account_name = '<your account name>'
account_key = '<your account key>'
container_name = '<container name>'
blob_name = '< the xml blob name, such as a-sample.xml>'
block_blob_service = BlockBlobService(account_name=account_name, account_key=account_key)
xml_content = block_blob_service.get_blob_to_text(container_name, blob_name).content
print(xml_content)

我在下面的Azure Jupyter Notebook中做了这些操作,它也适用于Azure Databricks。

希望有帮助。