Datastore 类
表示通过 Azure 机器学习存储帐户的存储抽象。
数据存储附加到工作区,用于存储到 Azure 存储服务的连接信息,以便可以按名称引用它们,并且无需记住用于连接到存储服务的连接信息和机密。
可注册为数据存储的受支持 Azure 存储服务的示例包括:
Azure Blob 容器
Azure 文件共享
Azure Data Lake
Azure Data Lake Gen2
Azure SQL 数据库
Azure Database for PostgreSQL
Databricks 文件系统
Azure Database for MySQL
使用此类可以执行管理操作,包括注册、列出、获取和移除数据存储。
每个服务的数据存储都是使用此类的 register*
方法创建的。 使用数据存储访问数据时,必须具有访问数据的权限,这取决于在数据存储中注册的凭据。
有关数据存储以及如何在机器学习中使用数据存储的详细信息,请参阅以下文章:
按名称获取数据存储。 此调用将向数据存储服务发出请求。
- 继承
-
builtins.objectDatastore
构造函数
Datastore(workspace, name=None)
参数
注解
若要与数据存储中的数据进行交互以进行机器学习任务(例如训练),请创建一个 Azure 机器学习数据集。 数据集提供了将表格数据加载到 pandas 或 Spark DataFrame 的函数。 数据集还提供从 Azure Blob 存储、Azure 文件存储、Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2、Azure SQL 数据库和 Azure Database for PostgreSQL 下载或装载任何格式的文件的功能。 详细了解如何使用数据集进行训练。
下面的示例演示如何创建连接到 Azure Blob 容器的数据存储。
from azureml.exceptions import UserErrorException
blob_datastore_name='MyBlobDatastore'
account_name=os.getenv("BLOB_ACCOUNTNAME_62", "<my-account-name>") # Storage account name
container_name=os.getenv("BLOB_CONTAINER_62", "<my-container-name>") # Name of Azure blob container
account_key=os.getenv("BLOB_ACCOUNT_KEY_62", "<my-account-key>") # Storage account key
try:
blob_datastore = Datastore.get(ws, blob_datastore_name)
print("Found Blob Datastore with name: %s" % blob_datastore_name)
except UserErrorException:
blob_datastore = Datastore.register_azure_blob_container(
workspace=ws,
datastore_name=blob_datastore_name,
account_name=account_name, # Storage account name
container_name=container_name, # Name of Azure blob container
account_key=account_key) # Storage account key
print("Registered blob datastore with name: %s" % blob_datastore_name)
blob_data_ref = DataReference(
datastore=blob_datastore,
data_reference_name="blob_test_data",
path_on_datastore="testdata")
方法
get |
按名称获取数据存储。 这与调用构造函数相同。 |
get_default |
获取工作区的默认数据存储。 |
register_azure_blob_container |
将 Azure Blob 容器注册到数据存储。 支持基于凭据 (GA) 和基于标识 (预览版) 的数据访问,可以选择使用 SAS 令牌或存储帐户密钥。 如果数据存储没有保存凭据,那么如果用户的 AAD 令牌直接调用以下函数之一,则将在笔记本或本地 Python 程序中使用:FileDataset.mount FileDataset.download FileDataset.to_path TabularDataset.to_pandas_dataframe TabularDataset.to_dask_dataframe TabularDataset.to_spark_dataframe TabularDataset.to_parquet_files TabularDataset.to_csv_files 计算目标的标识将在 Experiment 提交的作业中使用。提交以进行数据访问身份验证。 在此处了解更多信息。 |
register_azure_data_lake |
初始化新的 Azure Data Lake 数据存储。 支持基于 (GA) 和基于标识的 (预览版) 数据访问,可以在服务主体中注册数据存储,进行基于凭据的数据访问。 如果数据存储没有保存凭据,那么如果用户的 AAD 令牌直接调用以下函数之一,则将在笔记本或本地 Python 程序中使用:FileDataset.mount FileDataset.download FileDataset.to_path TabularDataset.to_pandas_dataframe TabularDataset.to_dask_dataframe TabularDataset.to_spark_dataframe TabularDataset.to_parquet_files TabularDataset.to_csv_files 计算目标的标识将在 Experiment 提交的作业中使用。提交以进行数据访问身份验证。 在此处了解更多信息。 请参阅下面的示例,了解如何将 Data Lake Gen1 注册为数据存储。
|
register_azure_data_lake_gen2 |
初始化新的 Azure Data Lake Gen2 数据存储。 支持基于 (GA) 和基于标识的 (预览版) 数据访问,可以在服务主体中注册数据存储,进行基于凭据的数据访问。 如果数据存储没有保存凭据,那么如果用户的 AAD 令牌直接调用以下函数之一,则将在笔记本或本地 Python 程序中使用:FileDataset.mount FileDataset.download FileDataset.to_path TabularDataset.to_pandas_dataframe TabularDataset.to_dask_dataframe TabularDataset.to_spark_dataframe TabularDataset.to_parquet_files TabularDataset.to_csv_files 计算目标的标识将在 Experiment 提交的作业中使用。提交以进行数据访问身份验证。 在此处了解更多信息。 |
register_azure_file_share |
向数据存储注册 Azure 文件共享。 可以选择使用 SAS 令牌或存储帐户密钥 |
register_azure_my_sql |
初始化新的 Azure MySQL 数据存储。 在 Azure 机器学习管道中,MySQL 数据存储只能用于创建 DataReference 作为 DataTransferStep 的输入和输出。 此处提供了更多详细信息。 请参阅下面的示例,了解如何将 Azure MySQL 数据库注册为数据存储。 |
register_azure_postgre_sql |
初始化新的 Azure PostgreSQL 数据存储。 请参阅下面的示例,了解如何将 Azure PostgreSQL 数据库注册为数据存储。 |
register_azure_sql_database |
初始化新的 Azure SQL 数据库数据存储。 支持基于凭据 (GA) 和基于标识 (预览版) 的数据访问,可以选择使用服务主体或用户名 + 密码。 如果数据存储没有保存凭据,那么如果用户的 AAD 令牌直接调用以下函数之一,则将在笔记本或本地 Python 程序中使用:FileDataset.mount FileDataset.download FileDataset.to_path TabularDataset.to_pandas_dataframe TabularDataset.to_dask_dataframe TabularDataset.to_spark_dataframe TabularDataset.to_parquet_files TabularDataset.to_csv_files 计算目标的标识将在 Experiment 提交的作业中使用。提交以进行数据访问身份验证。 在此处了解更多信息。 请参阅下面的示例,了解如何将 Azure SQL 数据库注册为数据存储。 |
register_dbfs |
初始化新的 Databricks 文件系统 (DBFS) 数据存储。 在 Azure 机器学习管道中,DBFS 数据存储只能用于创建 DataReference 作为 DatabricksStep 的输入和 PipelineData 作为其输出。 此处提供了更多详细信息。 |
register_hdfs |
注意 这是一个实验性的方法,可能会在任何时候更改。 有关详细信息,请参阅 https://aka.ms/azuremlexperimental。 初始化新的 HDFS 数据存储。 |
set_as_default |
设置默认数据存储。 |
unregister |
取消注册数据存储。 不会删除基础存储服务。 |
get
按名称获取数据存储。 这与调用构造函数相同。
static get(workspace, datastore_name)
参数
返回
该名称的相应数据存储。
返回类型
get_default
获取工作区的默认数据存储。
static get_default(workspace)
参数
返回
工作区的默认数据存储
返回类型
register_azure_blob_container
将 Azure Blob 容器注册到数据存储。
支持基于凭据 (GA) 和基于标识 (预览版) 的数据访问,可以选择使用 SAS 令牌或存储帐户密钥。 如果数据存储没有保存凭据,那么如果用户的 AAD 令牌直接调用以下函数之一,则将在笔记本或本地 Python 程序中使用:FileDataset.mount FileDataset.download FileDataset.to_path TabularDataset.to_pandas_dataframe TabularDataset.to_dask_dataframe TabularDataset.to_spark_dataframe TabularDataset.to_parquet_files TabularDataset.to_csv_files 计算目标的标识将在 Experiment 提交的作业中使用。提交以进行数据访问身份验证。 在此处了解更多信息。
static register_azure_blob_container(workspace, datastore_name, container_name, account_name, sas_token=None, account_key=None, protocol=None, endpoint=None, overwrite=False, create_if_not_exists=False, skip_validation=False, blob_cache_timeout=None, grant_workspace_access=False, subscription_id=None, resource_group=None)
参数
- sas_token
- str, <xref:optional>
帐户 SAS 令牌默认为 None。 对于数据读取,我们需要对容器 & 对象的最低列表 & 读取权限,对于数据写入,还需要写入 & 添加权限。
- blob_cache_timeout
- int, <xref:optional>
装载此 Blob 时,将缓存超时设置为此秒数。 如果为 None,则默认为无超时(即,读取时 blob 将在作业持续时间期间被缓存)。
- grant_workspace_access
- bool, <xref:optional>
默认为 False。 将其设置为 True 以从机器学习工作室访问虚拟网络后面的数据。这使机器学习工作室的数据访问使用工作区托管标识进行身份验证,并将工作区托管标识添加为存储的读者。 你必须是存储的所有者或用户访问管理员才能选择加入。 如果没有所需的权限,请要求管理员进行配置。 了解详细信息:https://docs.microsoft.com/azure/machine-learning/how-to-enable-studio-virtual-network。
返回
Blob 数据存储。
返回类型
注解
若要从不同于工作区区域的区域附加存储,可能会导致更高的延迟和额外的网络使用成本。
register_azure_data_lake
初始化新的 Azure Data Lake 数据存储。
支持基于 (GA) 和基于标识的 (预览版) 数据访问,可以在服务主体中注册数据存储,进行基于凭据的数据访问。 如果数据存储没有保存凭据,那么如果用户的 AAD 令牌直接调用以下函数之一,则将在笔记本或本地 Python 程序中使用:FileDataset.mount FileDataset.download FileDataset.to_path TabularDataset.to_pandas_dataframe TabularDataset.to_dask_dataframe TabularDataset.to_spark_dataframe TabularDataset.to_parquet_files TabularDataset.to_csv_files 计算目标的标识将在 Experiment 提交的作业中使用。提交以进行数据访问身份验证。 在此处了解更多信息。
请参阅下面的示例,了解如何将 Data Lake Gen1 注册为数据存储。
adlsgen1_datastore_name='adlsgen1datastore'
store_name=os.getenv("ADL_STORENAME", "<my_datastore_name>") # the ADLS name
subscription_id=os.getenv("ADL_SUBSCRIPTION", "<my_subscription_id>") # subscription id of the ADLS
resource_group=os.getenv("ADL_RESOURCE_GROUP", "<my_resource_group>") # resource group of ADLS
tenant_id=os.getenv("ADL_TENANT", "<my_tenant_id>") # tenant id of service principal
client_id=os.getenv("ADL_CLIENTID", "<my_client_id>") # client id of service principal
client_secret=os.getenv("ADL_CLIENT_SECRET", "<my_client_secret>") # the secret of service principal
adls_datastore = Datastore.register_azure_data_lake(
workspace=ws,
datastore_name=aslsgen1_datastore_name,
subscription_id=subscription_id, # subscription id of ADLS account
resource_group=resource_group, # resource group of ADLS account
store_name=store_name, # ADLS account name
tenant_id=tenant_id, # tenant id of service principal
client_id=client_id, # client id of service principal
client_secret=client_secret) # the secret of service principal
static register_azure_data_lake(workspace, datastore_name, store_name, tenant_id=None, client_id=None, client_secret=None, resource_url=None, authority_url=None, subscription_id=None, resource_group=None, overwrite=False, grant_workspace_access=False)
参数
- resource_url
- str, <xref:optional>
确定将在 Data Lake Store 上执行哪些操作的资源 URL,如果为 None,则默认为 https://datalake.azure.net/
,这允许我们执行文件系统操作。
- authority_url
- str, <xref:optional>
用于对用户进行身份验证的颁发机构 URL,默认为 https://login.microsoftonline.com
。
- grant_workspace_access
- bool, <xref:optional>
默认为 False。 将其设置为 True 以从机器学习工作室访问虚拟网络后面的数据。这使机器学习工作室的数据访问使用工作区托管标识进行身份验证,并将工作区托管标识添加为存储的读者。 你必须是存储的所有者或用户访问管理员才能选择加入。 如果没有所需的权限,请要求管理员进行配置。 了解详细信息:https://docs.microsoft.com/azure/machine-learning/how-to-enable-studio-virtual-network。
返回
返回 Azure Data Lake 数据存储。
返回类型
注解
若要从不同于工作区区域的区域附加存储,可能会导致更高的延迟和额外的网络使用成本。
注意
Azure Data Lake 数据存储支持使用 Azure 机器学习管道进行数据传输和运行 U-Sql 作业。
还可以将它用作 Azure 机器学习数据集的数据源,可以在任何受支持的计算上下载或装载。
register_azure_data_lake_gen2
初始化新的 Azure Data Lake Gen2 数据存储。
支持基于 (GA) 和基于标识的 (预览版) 数据访问,可以在服务主体中注册数据存储,进行基于凭据的数据访问。 如果数据存储没有保存凭据,那么如果用户的 AAD 令牌直接调用以下函数之一,则将在笔记本或本地 Python 程序中使用:FileDataset.mount FileDataset.download FileDataset.to_path TabularDataset.to_pandas_dataframe TabularDataset.to_dask_dataframe TabularDataset.to_spark_dataframe TabularDataset.to_parquet_files TabularDataset.to_csv_files 计算目标的标识将在 Experiment 提交的作业中使用。提交以进行数据访问身份验证。 在此处了解更多信息。
static register_azure_data_lake_gen2(workspace, datastore_name, filesystem, account_name, tenant_id=None, client_id=None, client_secret=None, resource_url=None, authority_url=None, protocol=None, endpoint=None, overwrite=False, subscription_id=None, resource_group=None, grant_workspace_access=False)
参数
- resource_url
- str, <xref:optional>
确定将在 Data Lake Store 上执行哪些操作的资源 URL,默认为 https://storage.azure.com/
,这允许我们执行文件系统操作。
- authority_url
- str, <xref:optional>
用于对用户进行身份验证的颁发机构 URL,默认为 https://login.microsoftonline.com
。
- grant_workspace_access
- bool, <xref:optional>
默认为 False。 将其设置为 True 以从机器学习工作室访问虚拟网络后面的数据。这使机器学习工作室的数据访问使用工作区托管标识进行身份验证,并将工作区托管标识添加为存储的读者。 你必须是存储的所有者或用户访问管理员才能选择加入。 如果没有所需的权限,请要求管理员进行配置。 了解详细信息:https://docs.microsoft.com/azure/machine-learning/how-to-enable-studio-virtual-network。
返回
返回 Azure Data Lake Gen2 数据存储。
返回类型
注解
若要从不同于工作区区域的区域附加存储,可能会导致更高的延迟和额外的网络使用成本。
register_azure_file_share
向数据存储注册 Azure 文件共享。
可以选择使用 SAS 令牌或存储帐户密钥
static register_azure_file_share(workspace, datastore_name, file_share_name, account_name, sas_token=None, account_key=None, protocol=None, endpoint=None, overwrite=False, create_if_not_exists=False, skip_validation=False)
参数
- sas_token
- str, <xref:optional>
帐户 SAS 令牌默认为 None。 对于数据读取,我们至少需要容器 & 对象的“列表 & 读取”权限;对于数据写入,还需要“写入 & 添加”权限。
返回
文件数据存储。
返回类型
注解
若要从不同于工作区区域的区域附加存储,可能会导致更高的延迟和额外的网络使用成本。
register_azure_my_sql
初始化新的 Azure MySQL 数据存储。
在 Azure 机器学习管道中,MySQL 数据存储只能用于创建 DataReference 作为 DataTransferStep 的输入和输出。 此处提供了更多详细信息。
请参阅下面的示例,了解如何将 Azure MySQL 数据库注册为数据存储。
static register_azure_my_sql(workspace, datastore_name, server_name, database_name, user_id, user_password, port_number=None, endpoint=None, overwrite=False, **kwargs)
参数
返回
返回 MySQL 数据库数据存储。
返回类型
注解
若要从不同于工作区区域的区域附加存储,可能会导致更高的延迟和额外的网络使用成本。
mysql_datastore_name="mysqldatastore"
server_name=os.getenv("MYSQL_SERVERNAME", "<my_server_name>") # FQDN name of the MySQL server
database_name=os.getenv("MYSQL_DATBASENAME", "<my_database_name>") # Name of the MySQL database
user_id=os.getenv("MYSQL_USERID", "<my_user_id>") # The User ID of the MySQL server
user_password=os.getenv("MYSQL_USERPW", "<my_user_password>") # The user password of the MySQL server.
mysql_datastore = Datastore.register_azure_my_sql(
workspace=ws,
datastore_name=mysql_datastore_name,
server_name=server_name,
database_name=database_name,
user_id=user_id,
user_password=user_password)
register_azure_postgre_sql
初始化新的 Azure PostgreSQL 数据存储。
请参阅下面的示例,了解如何将 Azure PostgreSQL 数据库注册为数据存储。
static register_azure_postgre_sql(workspace, datastore_name, server_name, database_name, user_id, user_password, port_number=None, endpoint=None, overwrite=False, enforce_ssl=True, **kwargs)
参数
- endpoint
- str, <xref:optional>
PostgreSQL 服务器的终结点。 如果为 None,则默认为 postgres.database.azure.com。
返回
返回 PostgreSQL 数据库数据存储。
返回类型
注解
若要从不同于工作区区域的区域附加存储,可能会导致更高的延迟和额外的网络使用成本。
psql_datastore_name="postgresqldatastore"
server_name=os.getenv("PSQL_SERVERNAME", "<my_server_name>") # FQDN name of the PostgreSQL server
database_name=os.getenv("PSQL_DATBASENAME", "<my_database_name>") # Name of the PostgreSQL database
user_id=os.getenv("PSQL_USERID", "<my_user_id>") # The database user id
user_password=os.getenv("PSQL_USERPW", "<my_user_password>") # The database user password
psql_datastore = Datastore.register_azure_postgre_sql(
workspace=ws,
datastore_name=psql_datastore_name,
server_name=server_name,
database_name=database_name,
user_id=user_id,
user_password=user_password)
register_azure_sql_database
初始化新的 Azure SQL 数据库数据存储。
支持基于凭据 (GA) 和基于标识 (预览版) 的数据访问,可以选择使用服务主体或用户名 + 密码。 如果数据存储没有保存凭据,那么如果用户的 AAD 令牌直接调用以下函数之一,则将在笔记本或本地 Python 程序中使用:FileDataset.mount FileDataset.download FileDataset.to_path TabularDataset.to_pandas_dataframe TabularDataset.to_dask_dataframe TabularDataset.to_spark_dataframe TabularDataset.to_parquet_files TabularDataset.to_csv_files 计算目标的标识将在 Experiment 提交的作业中使用。提交以进行数据访问身份验证。 在此处了解更多信息。
请参阅下面的示例,了解如何将 Azure SQL 数据库注册为数据存储。
static register_azure_sql_database(workspace, datastore_name, server_name, database_name, tenant_id=None, client_id=None, client_secret=None, resource_url=None, authority_url=None, endpoint=None, overwrite=False, username=None, password=None, subscription_id=None, resource_group=None, grant_workspace_access=False, **kwargs)
参数
- server_name
- str
SQL 服务器名称。 对于完全限定的域名(如“sample.database.windows.net”),server_name 值应为“sample”,终结点值应为“database.windows.net”。
- resource_url
- str, <xref:optional>
确定将在 SQL 数据库存储上执行哪些操作的资源 URL,如果是 None,则默认为 https://database.windows.net/。
- authority_url
- str, <xref:optional>
用于对用户进行身份验证的颁发机构 URL,默认为 https://login.microsoftonline.com。
- grant_workspace_access
- bool, <xref:optional>
默认为 False。 将其设置为 True 以从机器学习工作室访问虚拟网络后面的数据。这使机器学习工作室的数据访问使用工作区托管标识进行身份验证,并将工作区托管标识添加为存储的读者。 你必须是存储的所有者或用户访问管理员才能选择加入。 如果没有所需的权限,请要求管理员进行配置。 了解详细信息:https://docs.microsoft.com/azure/machine-learning/how-to-enable-studio-virtual-network。
返回
返回 SQL 数据库数据存储。
返回类型
注解
若要从不同于工作区区域的区域附加存储,可能会导致更高的延迟和额外的网络使用成本。
sql_datastore_name="azuresqldatastore"
server_name=os.getenv("SQL_SERVERNAME", "<my_server_name>") # Name of the Azure SQL server
database_name=os.getenv("SQL_DATABASENAME", "<my_database_name>") # Name of the Azure SQL database
username=os.getenv("SQL_USER_NAME", "<my_sql_user_name>") # The username of the database user.
password=os.getenv("SQL_USER_PASSWORD", "<my_sql_user_password>") # The password of the database user.
sql_datastore = Datastore.register_azure_sql_database(
workspace=ws,
datastore_name=sql_datastore_name,
server_name=server_name, # name should not contain fully qualified domain endpoint
database_name=database_name,
username=username,
password=password,
endpoint='database.windows.net')
register_dbfs
初始化新的 Databricks 文件系统 (DBFS) 数据存储。
在 Azure 机器学习管道中,DBFS 数据存储只能用于创建 DataReference 作为 DatabricksStep 的输入和 PipelineData 作为其输出。 此处提供了更多详细信息。
static register_dbfs(workspace, datastore_name)
参数
返回
返回 DBFS 数据存储。
返回类型
注解
若要从不同于工作区区域的区域附加存储,可能会导致更高的延迟和额外的网络使用成本。
register_hdfs
注意
这是一个实验性的方法,可能会在任何时候更改。 有关详细信息,请参阅 https://aka.ms/azuremlexperimental。
初始化新的 HDFS 数据存储。
static register_hdfs(workspace, datastore_name, protocol, namenode_address, hdfs_server_certificate, kerberos_realm, kerberos_kdc_address, kerberos_principal, kerberos_keytab=None, kerberos_password=None, overwrite=False)
参数
- protocol
- str 或 <xref:_restclient.models.enum>
与 HDFS 群集通信时要使用的协议。 http 或 https。 可能的值包括:“http”、“https”
set_as_default
unregister
取消注册数据存储。 不会删除基础存储服务。
unregister()
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈