Я пытаюсь прочитать данные из некоторых контейнеров в свой блокнот и записать их в формат данных spark или pandas. Существует некоторая документация по использованию пароля учетной записи, но как это сделать с помощью Azure Active Directory?
Как считывать данные в записную книжку Databricks из большого двоичного объекта Azure с помощью Azure Active Directory (AAD)
Ответы (2)
К сожалению, это поддерживаемые методы в Databricks для доступа к хранилищу BLOB-объектов Azure.
- Подключите контейнер хранилища BLOB-объектов Azure.
- Доступ к хранилищу BLOB-объектов Azure напрямую
- Доступ к хранилищу BLOB-объектов Azure с помощью RDD API
Ссылка: Databricks — хранилище BLOB-объектов Azure
Надеюсь это поможет.
Существует несколько официальных документов Azure о доступе к Azure Blob с помощью Azure AD, как показано ниже.
- Авторизация доступа к большим двоичным объектам и очередям Azure с помощью Azure Active Directory< /а>
- Авторизация доступа к большим двоичным объектам и очередям с помощью Azure Active Directory из клиентского приложения
- Авторизация с помощью Azure Active Directory об авторизации запросов к хранилищу Azure
Между тем, вот мой пример кода для получения ключа (пароля учетной записи) учетной записи хранилища Azure для использования в блоках данных.
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.storage import StorageManagementClient
# Please refer to the second document above to get these parameter values
credentials = ServicePrincipalCredentials(
client_id='<your client id>',
secret='<your client secret>',
tenant='<your tenant id>'
)
subscription_id = '<your subscription id>'
client = StorageManagementClient(credentials, subscription_id)
resource_group_name = '<the resource group name of your storage account>'
account_name = '<your storage account name>'
# print(dir(client.storage_accounts))
keys_json_text = client.storage_accounts.list_keys(resource_group_name, account_name, raw=True).response.text
import json
keys_json = json.loads(keys_json_text)
# print(keys_json)
# {"keys":[{"keyName":"key1","value":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==","permissions":"FULL"},{"keyName":"key2","value":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==","permissions":"FULL"}]}'
key1 = keys_json['keys'][0]['value']
print(key1)
Затем вы можете использовать указанный выше пароль учетной записи, чтобы следовать официальному документу Azure Databricks Данные > Источники данных > Хранилище BLOB-объектов Azure для чтения данных.
В противном случае вы можете обратиться к шагам 1 и 2 моего ответа для другого потока SO преобразование данных в фабрике данных Azure с помощью блоков данных python для чтения данных, как показано в приведенном ниже коде.
from azure.storage.blob.baseblobservice import BaseBlobService
from azure.storage.blob import ContainerPermissions
from datetime import datetime, timedelta
account_name = '<your account name>'
account_key = '<your account key>' # the key comes from the code above
container_name = '<your container name>'
service = BaseBlobService(account_name=account_name, account_key=account_key)
token = service.generate_container_shared_access_signature(container_name, permission=ContainerPermissions.READ, expiry=datetime.utcnow() + timedelta(hours=1),)
blob_name = '<your blob name of dataset>'
blob_url_with_token = f"https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}?{token}"
import pandas as pd
pdf = pd.read_json(blob_url_with_token)
df = spark.createDataFrame(pdf)