You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure ML中AzureDataLakeGen2Datastore无法上传文件的问题咨询

问题:AzureDataLakeGen2Datastore无法使用upload方法上传文件

背景操作

我已将启用DataLake文件系统的Azure存储账户Gen2注册为数据存储,代码如下:

_ = Datastore.register_azure_data_lake_gen2(workspace='xxx',
                                            datastore_name='store-identifier',
                                            filesystem= 'container',
                                            account_name= 'xxx',
                                            subscription_id= 'xxx',
                                            resource_group= 'xxx',
                                            overwrite=1)

尝试通过以下代码向其上传文件:

destination_store = Datastore.get(workspace, 'store-identifier');
destination_store.upload(
    src='data/', target_path="data_science/", overwrite=True
)

但出现报错:

AzureDataLakeGen2Datastore' object has no attribute 'upload'

查看AzureDataLakeGen2Datastore类的说明,得知该类不支持upload方法,需使用Dataset实例上传数据。但尝试了Dataset.Tabular.upload和Dataset.Files.upload,均无法实现该功能。请问后续应如何操作?Azure机器学习服务是否暂不支持此功能?


解决方案

Azure ML的AzureDataLakeGen2Datastore确实不支持直接调用upload方法,你可以通过以下两种方式实现文件上传:

方式一:使用Azure Storage SDK直接操作ADLS Gen2

借助azure-storage-file-datalake库直接操作存储账户,示例代码如下:

from azure.storage.filedatalake import DataLakeServiceClient

# 初始化服务客户端,可使用账户密钥或SAS令牌作为凭证
service_client = DataLakeServiceClient(account_url="https://<your-account-name>.dfs.core.windows.net/", credential="<your-credential>")

# 获取目标文件系统(对应ADLS Gen2的容器)
file_system_client = service_client.get_file_system_client(file_system="container")

# 创建目标目录(如果不存在)
directory_client = file_system_client.get_directory_client("data_science")
directory_client.create_directory()

# 上传单个文件,可循环遍历本地目录实现批量上传
file_client = directory_client.get_file_client("sample.txt")
with open("./data/sample.txt", "rb") as data:
    file_client.upload_data(data, overwrite=True)

方式二:通过Azure ML Dataset同步文件到ADLS Gen2

如果需要在Azure ML工作区中管理上传的文件,可以通过创建File Dataset并注册的方式完成同步:

from azureml.core.dataset import Dataset

# 从本地路径和目标存储路径创建关联
local_files_path = "./data/*"
dataset = Dataset.File.from_files(path=[(destination_store, "data_science/"), local_files_path])

# 注册数据集到工作区,此操作会自动将本地文件上传到指定的ADLS Gen2路径
dataset.register(workspace=workspace, name="adls_uploaded_data", overwrite=True)

这种方式会把本地文件同步到ADLS Gen2的目标路径,同时在工作区生成对应的数据集条目,方便后续在机器学习流程中直接调用。

内容的提问来源于stack exchange,提问作者frictionlesspulley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 04:24:23