无需下载即可访问 blob 存储中的数据
Access data within the blob storage without downloading
我们的客户正在使用 Azure 的 blob 存储服务来保存大文件,以便我们可以使用 Azure 在线服务来处理它们。
我们希望使用 Azure 直接获得的计算资源来读取和处理这些文件,而无需将它们下载到其他 Azure 服务,例如 Azure Machine Learning Studio。
到目前为止,我们无法访问 blob 存储中的数据,除非将它们下载到 Azure Machine Learning Studio 中进行处理。
此外,我们要读取的文件的 none 是以下类型:
但是,可以在 python 扩展的帮助下阅读它们。
我们如何在不事先下载的情况下访问 blob 存储中的数据?
Azure 是否有可能 mount blob 存储到 Machine Learning Studio?
供您参考:我们不需要使用 Azure 机器学习工作室,而是使用具有计算资源的 Azure 在线服务。
此问题与以下 Whosebug 问题相关:
Azure Blob - Read using Python
这是对我们有用的解决方法之一
import os, uuid, sys
from azure.storage.blob import BlockBlobService, PublicAccess
import pandas as pd
blobfile = "<Your BloB Name>"
container = "<Your Container Name>"
blob_account_name = "<Your storage Account>"
sas_token="<Your SAS Token>"
block_blob_service = BlockBlobService(account_name=blob_account_name, sas_token=sas_token)
print("\n File Content")
blob1 = block_blob_service.get_blob_to_text(container, blobfile)
print(blob1.content);
以下截图供您参考:-
注意:- 确保安装 azure-storage-blob
2.1.0 版本,即 pip install azure-storage-blob==2.1.0
这也可以通过 Azure Databricks 实现。尝试检查 Accessing Azure Blob Storage from Azure Databricks
这是适合我的解决方案:
首先通过 Azure 机器学习工作室将 Blob-Storage-Container 注册为数据存储。
然后在 Azure Notebook 中:
from adlfs import AzureBlobFileSystem #pip install adlfs
from azureml.core import Workspace, Datastore, Dataset
from azureml.data.datapath import DataPath
# Load the workspace from the saved config file
ws = Workspace.from_config()
ds = ws.get_default_datastore()
container_name = ds.container_name
storage_options = {"account_name": "Storage account name", "account_key": ds.account_key}
fs = AzureBlobFileSystem(**storage_options)
然后你可以使用fs.ls(f"blob-storage-container-name")
和fs.glob(f"blob-storage-container-name/**/*.png")
来搜索Blob-Storage-Container。
fs.isdir('blob-storage-container-name/path/to/folder')
和 fs.isfile('blob-storage-container-name/path/to/file')
也按预期工作。
您还可以使用 os 获取有关文件位置及其名称的信息。
import os
my_path = 'blob-storage-container-name/path/to/file'
print(os.path.split(my_path))
请注意,您不能像通常使用 fs.mkdir()
命令那样创建文件夹!
相反,当您创建文件时,您可以在 blob-storage-container 中指定应保存文件的位置。
with fs.open('blob-storage-container-name/path/to/file/Folder1/Folder2/readme.txt', 'w') as f:
f.write('working')
执行命令后,您会看到Folder1和Folder2已创建。
我们的客户正在使用 Azure 的 blob 存储服务来保存大文件,以便我们可以使用 Azure 在线服务来处理它们。
我们希望使用 Azure 直接获得的计算资源来读取和处理这些文件,而无需将它们下载到其他 Azure 服务,例如 Azure Machine Learning Studio。
到目前为止,我们无法访问 blob 存储中的数据,除非将它们下载到 Azure Machine Learning Studio 中进行处理。
此外,我们要读取的文件的 none 是以下类型:
但是,可以在 python 扩展的帮助下阅读它们。
我们如何在不事先下载的情况下访问 blob 存储中的数据?
Azure 是否有可能 mount blob 存储到 Machine Learning Studio?
供您参考:我们不需要使用 Azure 机器学习工作室,而是使用具有计算资源的 Azure 在线服务。
此问题与以下 Whosebug 问题相关:
Azure Blob - Read using Python
这是对我们有用的解决方法之一
import os, uuid, sys
from azure.storage.blob import BlockBlobService, PublicAccess
import pandas as pd
blobfile = "<Your BloB Name>"
container = "<Your Container Name>"
blob_account_name = "<Your storage Account>"
sas_token="<Your SAS Token>"
block_blob_service = BlockBlobService(account_name=blob_account_name, sas_token=sas_token)
print("\n File Content")
blob1 = block_blob_service.get_blob_to_text(container, blobfile)
print(blob1.content);
以下截图供您参考:-
注意:- 确保安装 azure-storage-blob
2.1.0 版本,即 pip install azure-storage-blob==2.1.0
这也可以通过 Azure Databricks 实现。尝试检查 Accessing Azure Blob Storage from Azure Databricks
这是适合我的解决方案:
首先通过 Azure 机器学习工作室将 Blob-Storage-Container 注册为数据存储。
然后在 Azure Notebook 中:
from adlfs import AzureBlobFileSystem #pip install adlfs
from azureml.core import Workspace, Datastore, Dataset
from azureml.data.datapath import DataPath
# Load the workspace from the saved config file
ws = Workspace.from_config()
ds = ws.get_default_datastore()
container_name = ds.container_name
storage_options = {"account_name": "Storage account name", "account_key": ds.account_key}
fs = AzureBlobFileSystem(**storage_options)
然后你可以使用fs.ls(f"blob-storage-container-name")
和fs.glob(f"blob-storage-container-name/**/*.png")
来搜索Blob-Storage-Container。
fs.isdir('blob-storage-container-name/path/to/folder')
和 fs.isfile('blob-storage-container-name/path/to/file')
也按预期工作。
您还可以使用 os 获取有关文件位置及其名称的信息。
import os
my_path = 'blob-storage-container-name/path/to/file'
print(os.path.split(my_path))
请注意,您不能像通常使用 fs.mkdir()
命令那样创建文件夹!
相反,当您创建文件时,您可以在 blob-storage-container 中指定应保存文件的位置。
with fs.open('blob-storage-container-name/path/to/file/Folder1/Folder2/readme.txt', 'w') as f:
f.write('working')
执行命令后,您会看到Folder1和Folder2已创建。