python - 如何将 AMLS 连接到 ADLS Gen 2?
问题描述
我想在我的 Azure 机器学习工作区 ( azureml-core==1.12.0
) 中注册来自 ADLS Gen2 的数据集。鉴于 Python SDK文档中不需要服务主体信息.register_azure_data_lake_gen2()
,我成功使用以下代码将 ADLS gen2 注册为数据存储:
from azureml.core import Datastore
adlsgen2_datastore_name = os.environ['adlsgen2_datastore_name']
account_name=os.environ['account_name'] # ADLS Gen2 account name
file_system=os.environ['filesystem']
adlsgen2_datastore = Datastore.register_azure_data_lake_gen2(
workspace=ws,
datastore_name=adlsgen2_datastore_name,
account_name=account_name,
filesystem=file_system
)
但是,当我尝试注册数据集时,使用
from azureml.core import Dataset
adls_ds = Datastore.get(ws, datastore_name=adlsgen2_datastore_name)
data = Dataset.Tabular.from_delimited_files((adls_ds, 'folder/data.csv'))
我收到一个错误
无法从指定路径加载任何数据。确保路径可访问并包含数据。
ScriptExecutionException
是由StreamAccessException
. StreamAccessException 是由 AuthenticationException 引起的。'AdlsGen2-ReadHeaders'
存储上的“[已编辑]”失败,状态码为“禁止”(此请求无权使用此权限执行此操作。),客户端请求 ID <CLIENT_REQUEST_ID>,请求 ID <REQUEST_ID>。错误消息:[已编辑] | session_id=<SESSION_ID>
我是否需要启用服务主体才能使其正常工作?使用 ML Studio UI,似乎需要服务主体来注册数据存储。
我注意到的另一个问题是 AMLS 正在尝试访问此处的数据集:
https://adls_gen2_account_name.**dfs**.core.windows.net/container/folder/data.csv
而 ADLS Gen2 中的实际 URI 是:https://adls_gen2_account_name.**blob**.core.windows.net/container/folder/data.csv
解决方案
根据此文档,您需要启用服务主体。
1.您需要注册您的应用程序并授予服务主体存储 Blob 数据读取器访问权限。
2.试试这个代码:
adlsgen2_datastore = Datastore.register_azure_data_lake_gen2(workspace=ws,
datastore_name=adlsgen2_datastore_name,
account_name=account_name,
filesystem=file_system,
tenant_id=tenant_id,
client_id=client_id,
client_secret=client_secret
)
adls_ds = Datastore.get(ws, datastore_name=adlsgen2_datastore_name)
dataset = Dataset.Tabular.from_delimited_files((adls_ds,'sample.csv'))
print(dataset.to_pandas_dataframe())
结果:
推荐阅读
- java - Crosswalk 在 API 级别 26 中返回“Crosswalk 的 API 尚未准备好”
- excel - 将图像插入单元格
- pentaho - 阻塞步骤与阻塞此步骤,直到 Pentaho 转换中的步骤完成
- ruby - 将 RSpec 作为 Rake 任务运行有什么好处
- html - 如何覆盖引导字体系列?
- python - 我对 ExclusiveMinimum 属性的实现是否正确?
- c++ - Qt C++ 创建一个方形音频音波。播放并保存
- angular - Angular 条件事件绑定
- python - 无法在我的 python 3.6 windows 10 中成功安装 Basemap
- ios - AR 参考图像平面在 iOS Swift 中的位置不正确?