Чтение XML-файла из хранилища BLOB-объектов Azure - PullRequest
0 голосов
/ 03 июля 2019

Я хочу прочитать XML-файл, хранящийся в моем хранилище BLOB-объектов Azure, в записной книжке Jupyter (точнее PySpark3).

Я наткнулся на этот урок - но мне немного не повезло.

Basi, Кэлли жалуется, что не может найти azure.storage - из строки from azure.storage.blob import BlobService.

Я пробовал:

! pip install --user azure.storage 

без удачи.

Может ли кто-нибудь любезно помочь:

  • Это выше выдает синтаксическую ошибку при попытке установить
  • В противном случае, есть ли более четкие инструкции о том, как получить файл из хранилища BLOB-объектов Azure в качестве фрейма данных для использования?

Любое руководство приветствуется.

Спасибо.

1 Ответ

0 голосов
/ 03 июля 2019

Существует два решения для получения содержимого XML из BLOB-объекта.

Решение 1. Чтобы получить URL-адрес большого двоичного объекта с токеном sas с помощью обозревателя хранилищ Azure, а затем получить содержимое xml на requests.

Рис 1.1. Щелкните правой кнопкой мыши на объекте a-sample.xml и выберите параметр Get Shared Access Signature.

.

enter image description here

Рис 1.2. Выберите опцию UTC и включите разрешение Read, затем Create.

enter image description here

Рис 1.3. Copy URL-адрес большого двоичного объекта с маркером sas.

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. На самом деле Azure Storage SDK для Python называется azure-storage, поэтому вы можете следовать приведенному ниже рисунку, чтобы делать то, что вы хотите.

Рис 2.1. Установите хранилище Azure Python через !pip install azure-storage и получите содержимое по коду. Пожалуйста, обратитесь к репозиторию 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 , он также работает с базами данных Azure.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...