FileDataset 类
表示数据存储或公共 URL 中要用于 Azure 机器学习的文件引用的集合。
FileDataset 定义了一系列延迟评估的不可变作,用于将数据从数据源加载到文件流中。 在要求 FileDataset 提供数据之前,不会从源加载数据。
FileDataset 是使用 from_files FileDatasetFactory 类的方法创建的。
有关详细信息,请参阅 “添加和注册数据集”一文。 若要开始使用文件数据集,请参阅 https://aka.ms/filedataset-samplenotebook。
初始化 FileDataset 对象。
不应直接调用此构造函数。 数据集旨在使用 FileDatasetFactory 类创建。
构造函数
FileDataset()
注解
FileDataset 可用作试验运行的输入。 该名称也可以注册到具有指定名称的工作区,并稍后通过该名称进行检索。
可以通过调用此类上可用的不同子设置方法来对 FileDataset 进行子集。 子设置的结果始终是新的 FileDataset。
当要求 FileDataset 将数据传递到另一个存储机制(例如下载或装载到本地路径的文件)时,会发生实际数据加载。
方法
as_cache |
注释 这是一种实验性方法,随时可能更改。 有关详细信息,请参阅 https://aka.ms/azuremlexperimental。 创建映射到datacache_store和数据集的 DatacacheConsumptionConfig。 |
as_download |
创建一个 DatasetConsumptionConfig,该模式设置为下载。 在提交的运行中,数据集中的文件将下载到计算目标上的本地路径。 可以从参数值和运行上下文的input_datasets字段检索下载位置。 我们将自动生成输入名称。 如果要指定自定义输入名称,请调用as_named_input方法。
|
as_hdfs |
将模式设置为 hdfs。 在提交的 synapse 运行中,数据集中的文件将转换为计算目标上的本地路径。 可以从参数值和 os 环境变量中检索 hdfs 路径。
|
as_mount |
创建一个 DatasetConsumptionConfig,并将模式设置为装载。 在提交的运行中,数据集中的文件将装载到计算目标上的本地路径。 可以从参数值和运行上下文的input_datasets字段检索装入点。 我们将自动生成输入名称。 如果要指定自定义输入名称,请调用as_named_input方法。
|
download |
下载数据集定义的文件流作为本地文件。 |
file_metadata |
注释 这是一种实验性方法,随时可能更改。 有关详细信息,请参阅 https://aka.ms/azuremlexperimental。 通过指定元数据列名称获取文件元数据表达式。 支持的文件元数据列为 Size、LastModifiedTime、CreationTime、Extension 和 CanSeek |
filter |
注释 这是一种实验性方法,随时可能更改。 有关详细信息,请参阅 https://aka.ms/azuremlexperimental。 筛选数据,仅保留与指定表达式匹配的记录。 |
hydrate |
注释 这是一种实验性方法,随时可能更改。 有关详细信息,请参阅 https://aka.ms/azuremlexperimental。 将数据集冻结到datacache_store中指定的请求副本中。 |
mount |
创建上下文管理器,用于装载数据集定义的文件流作为本地文件。 |
random_split |
将数据集中的文件流随机拆分为两个部分,大约按指定的百分比进行拆分。 返回的第一个数据集大约 |
skip |
按指定的计数从数据集顶部跳过文件流。 |
take |
按指定计数从数据集顶部获取文件流示例。 |
take_sample |
按指定概率大致获取数据集中的文件流的随机样本。 |
to_path |
获取数据集定义的每个文件流的文件路径列表。 |
as_cache
注释
这是一种实验性方法,随时可能更改。 有关详细信息,请参阅 https://aka.ms/azuremlexperimental。
创建映射到datacache_store和数据集的 DatacacheConsumptionConfig。
as_cache(datacache_store)
参数
名称 | 说明 |
---|---|
datacache_store
必需
|
要用于冻结的 datacachestore。 |
返回
类型 | 说明 |
---|---|
描述如何在运行中具体化 datacache 的配置对象。 |
as_download
创建一个 DatasetConsumptionConfig,该模式设置为下载。
在提交的运行中,数据集中的文件将下载到计算目标上的本地路径。 可以从参数值和运行上下文的input_datasets字段检索下载位置。 我们将自动生成输入名称。 如果要指定自定义输入名称,请调用as_named_input方法。
# Given a run submitted with dataset input like this:
dataset_input = dataset.as_download()
experiment.submit(ScriptRunConfig(source_directory, arguments=[dataset_input]))
# Following are sample codes running in context of the submitted run:
# The download ___location can be retrieved from argument values
import sys
download_location = sys.argv[1]
# The download ___location can also be retrieved from input_datasets of the run context.
from azureml.core import Run
download_location = Run.get_context().input_datasets['input_1']
as_download(path_on_compute=None)
参数
名称 | 说明 |
---|---|
path_on_compute
|
计算中要提供数据的目标路径。 默认值: None
|
注解
从单个文件的路径创建数据集时,下载位置将是单个下载文件的路径。 否则,下载位置将是所有已下载文件的封闭文件夹的路径。
如果path_on_compute以 /开头,则将它视为绝对路径。 如果它不以 /开头,则将它视为相对于工作目录的相对路径。 如果指定了绝对路径,请确保作业有权写入该目录。
as_hdfs
将模式设置为 hdfs。
在提交的 synapse 运行中,数据集中的文件将转换为计算目标上的本地路径。 可以从参数值和 os 环境变量中检索 hdfs 路径。
# Given a run submitted with dataset input like this:
dataset_input = dataset.as_hdfs()
experiment.submit(ScriptRunConfig(source_directory, arguments=[dataset_input]))
# Following are sample codes running in context of the submitted run:
# The hdfs path can be retrieved from argument values
import sys
hdfs_path = sys.argv[1]
# The hdfs path can also be retrieved from input_datasets of the run context.
import os
hdfs_path = os.environ['input_<hash>']
as_hdfs()
注解
从单个文件的路径创建数据集时,hdfs 路径将是单个文件的路径。 否则,hdfs 路径将是所有已装载文件的封闭文件夹的路径。
as_mount
创建一个 DatasetConsumptionConfig,并将模式设置为装载。
在提交的运行中,数据集中的文件将装载到计算目标上的本地路径。 可以从参数值和运行上下文的input_datasets字段检索装入点。 我们将自动生成输入名称。 如果要指定自定义输入名称,请调用as_named_input方法。
# Given a run submitted with dataset input like this:
dataset_input = dataset.as_mount()
experiment.submit(ScriptRunConfig(source_directory, arguments=[dataset_input]))
# Following are sample codes running in context of the submitted run:
# The mount point can be retrieved from argument values
import sys
mount_point = sys.argv[1]
# The mount point can also be retrieved from input_datasets of the run context.
from azureml.core import Run
mount_point = Run.get_context().input_datasets['input_1']
as_mount(path_on_compute=None)
参数
名称 | 说明 |
---|---|
path_on_compute
|
计算中要提供数据的目标路径。 默认值: None
|
注解
从单个文件的路径创建数据集时,装入点将是单个装载文件的路径。 否则,装入点将是所有已装载文件的封闭文件夹的路径。
如果path_on_compute以 /开头,则将它视为绝对路径。 如果它不以 /开头,则将它视为相对于工作目录的相对路径。 如果指定了绝对路径,请确保作业有权写入该目录。
download
下载数据集定义的文件流作为本地文件。
download(target_path=None, overwrite=False, ignore_not_found=False)
参数
名称 | 说明 |
---|---|
target_path
必需
|
要下载文件的本地目录。 如果为 None,数据将下载到临时目录中。 |
overwrite
必需
|
指示是否覆盖现有文件。 默认值为 False。 如果覆盖设置为 True,则会覆盖现有文件;否则将引发异常。 |
ignore_not_found
必需
|
指示如果未找到数据集指向的某些文件,则指示下载是否失败。 默认值为 False。 如果任何文件下载失败,如果ignore_not_found设置为 False,则下载将失败;否则,只要没有遇到其他错误类型,就会记录一个战争,因为未找到错误,而 dowload 将成功。 |
返回
类型 | 说明 |
---|---|
返回下载的每个文件的文件路径数组。 |
注解
如果target_path以 /开头,则它将被视为绝对路径。 如果它不以 /开头,则将它视为相对于当前工作目录的相对路径。
file_metadata
注释
这是一种实验性方法,随时可能更改。 有关详细信息,请参阅 https://aka.ms/azuremlexperimental。
通过指定元数据列名称获取文件元数据表达式。
支持的文件元数据列为 Size、LastModifiedTime、CreationTime、Extension 和 CanSeek
file_metadata(col)
参数
名称 | 说明 |
---|---|
col
必需
|
列的名称 |
返回
类型 | 说明 |
---|---|
<xref:azureml.dataprep.api.expression.RecordFieldExpression>
|
返回一个表达式,该表达式检索指定列中的值。 |
filter
注释
这是一种实验性方法,随时可能更改。 有关详细信息,请参阅 https://aka.ms/azuremlexperimental。
筛选数据,仅保留与指定表达式匹配的记录。
filter(expression)
参数
名称 | 说明 |
---|---|
expression
必需
|
<xref:azureml.dataprep.api.expression.Expression>
要计算的表达式。 |
返回
类型 | 说明 |
---|---|
修改后的数据集(未注册)。 |
注解
表达式首先使用列名称为数据集编制索引。 它们支持各种函数和运算符,可以使用逻辑运算符进行组合。 当数据拉取发生而不是定义数据时,将针对每个记录对生成的表达式进行延迟计算。
(dataset.file_metadata('Size') > 10000) & (dataset.file_metadata('CanSeek') == True)
dataset.file_metadata('Extension').starts_with('j')
hydrate
注释
这是一种实验性方法,随时可能更改。 有关详细信息,请参阅 https://aka.ms/azuremlexperimental。
将数据集冻结到datacache_store中指定的请求副本中。
hydrate(datacache_store, replica_count=None)
参数
名称 | 说明 |
---|---|
datacache_store
必需
|
要用于冻结的 datacachestore。 |
replica_count
必需
|
<xref:Int>, <xref:optional>
要冻结的副本数。 |
返回
类型 | 说明 |
---|---|
描述如何在运行中具体化 datacache 的配置对象。 |
mount
创建上下文管理器,用于装载数据集定义的文件流作为本地文件。
mount(mount_point=None, **kwargs)
参数
名称 | 说明 |
---|---|
mount_point
必需
|
要将文件装载到的本地目录。 如果为 None,则数据将装载到临时目录中,可以通过调用 MountContext.mount_point 实例方法找到该目录。 |
返回
类型 | 说明 |
---|---|
<xref:MountContext>: <xref:the> <xref:context> <xref:manager.> <xref:Upon> <xref:entering> <xref:the> <xref:context> <xref:manager>, <xref:the> <xref:dataflow> <xref:will> <xref:be> <xref:mounted> <xref:to> <xref:the> <xref:mount_point.> <xref:Upon> exit, <xref:it> <xref:will> <xref:remove> <xref:the> mount <xref:point> <xref:and> clean <xref:up> <xref:the> <xref:daemon> <xref:process> <xref:used> <xref:to> mount <xref:the> <xref:dataflow.>
|
返回用于管理装载生命周期的上下文管理器。 |
注解
将返回上下文管理器来管理装载的生命周期。 若要装载,需要输入上下文管理器并卸载,请退出上下文管理器。
仅在安装了本地包 libfuse 的 Unix 或 Unix 类操作系统上支持装载。 如果在 docker 容器中运行,则必须使用 –privileged 标志启动 docker 容器,或以 –cap-add SYS_ADMIN –device /dev/fuse 启动。
datastore = Datastore.get(workspace, 'workspaceblobstore')
dataset = Dataset.File.from_files((datastore, 'animals/dog/year-*/*.jpg'))
with dataset.mount() as mount_context:
# list top level mounted files and folders in the dataset
os.listdir(mount_context.mount_point)
# You can also use the start and stop methods
mount_context = dataset.mount()
mount_context.start() # this will mount the file streams
mount_context.stop() # this will unmount the file streams
如果target_path以 /开头,则它将被视为绝对路径。 如果它不以 /开头,则将它视为相对于当前工作目录的相对路径。
random_split
将数据集中的文件流随机拆分为两个部分,大约按指定的百分比进行拆分。
返回的第一个数据集大约 percentage
包含文件引用总数,第二个数据集包含剩余的文件引用。
random_split(percentage, seed=None)
参数
名称 | 说明 |
---|---|
percentage
必需
|
要按其拆分数据集的大致百分比。 这必须是介于 0.0 和 1.0 之间的数字。 |
seed
必需
|
用于随机生成器的可选种子。 |
返回
类型 | 说明 |
---|---|
返回表示拆分后的两个数据集的新 FileDataset 对象的元组。 |
skip
按指定的计数从数据集顶部跳过文件流。
skip(count)
参数
名称 | 说明 |
---|---|
count
必需
|
要跳过的文件流数。 |
返回
类型 | 说明 |
---|---|
返回一个新的 FileDataset 对象,该对象表示跳过了文件流的数据集。 |
take
按指定计数从数据集顶部获取文件流示例。
take(count)
参数
名称 | 说明 |
---|---|
count
必需
|
要获取的文件流数。 |
返回
类型 | 说明 |
---|---|
返回一个新的 FileDataset 对象,该对象表示采样的数据集。 |
take_sample
按指定概率大致获取数据集中的文件流的随机样本。
take_sample(probability, seed=None)
参数
名称 | 说明 |
---|---|
probability
必需
|
包含在示例中的文件流的概率。 |
seed
必需
|
用于随机生成器的可选种子。 |
返回
类型 | 说明 |
---|---|
返回一个新的 FileDataset 对象,该对象表示采样的数据集。 |
to_path
获取数据集定义的每个文件流的文件路径列表。
to_path()
返回
类型 | 说明 |
---|---|
返回文件路径数组。 |
注解
下载或装载文件流时,文件路径是本地文件的相对路径。
根据如何指定数据源来创建数据集,将从文件路径中删除一个通用前缀。 例如:
datastore = Datastore.get(workspace, 'workspaceblobstore')
dataset = Dataset.File.from_files((datastore, 'animals/dog/year-*/*.jpg'))
print(dataset.to_path())
# ['year-2018/1.jpg'
# 'year-2018/2.jpg'
# 'year-2019/1.jpg']
dataset = Dataset.File.from_files('https://dprepdata.blob.core.windows.net/demo/green-small/*.csv')
print(dataset.to_path())
# ['/green_tripdata_2013-08.csv']