matlab.io.datastore.BlockedFileSet
说明
matlab.io.datastore.BlockedFileSet
对象可帮助您在以迭代方式遍历文件时处理文件中的大量分块。可将 BlockedFileSet
对象和 DsFileReader
对象结合使用,来管理和读取数据存储中的文件。
创建对象
语法
描述
根据指定的位置为文件中的大量分块创建一个 bs
= matlab.io.datastore.BlockedFileSet(location
)BlockedFileSet
对象。
指定文件扩展名、子文件夹或设置对象属性。您可以指定多个名称-值对组。用引号将名称括起来。bs
= matlab.io.datastore.BlockedFileSet(location
,Name,Value
)
输入参量
location
— 要包括的文件或文件夹
字符向量 | 字符向量元胞数组 | 字符串数组 | 结构体
要包括在 BlockedFileSet
对象中的文件或文件夹,指定为字符向量、字符向量元胞数组、字符串数组或结构体。如果这些文件不在当前文件夹中,则 location
必须是完整或相对路径。指定文件夹的子文件夹中的文件不会自动包括在 BlockedFileSet
对象中。
通常,对于 Hadoop® 工作流来说,如果您将 location
指定为结构体,则它必须包含 FileName
、Offset
和 Size
字段。此要求使您可以将 location
参量直接用于 matlab.io.datastore.HadoopLocationBased
类的 initializeDatastore
方法。有关示例,请参阅Add Support for Hadoop。
指定 location
时可以使用通配符 (*)。指定此字符会将所有匹配的文件或者匹配文件夹中的所有文件都包括在文件集对象中。
如果文件在本地不可用,则文件或文件夹的完整路径必须为统一资源定位器 (URL),例如
hdfs://
。hostname
:portnumber
/path_to_file
数据类型: char
| cell
| string
| struct
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: bs = matlab.io.datastore.BlockedFileSet(location,'IncludeSubfolders',true)
FileExtensions
— 文件扩展名
字符向量 | 字符向量元胞数组 | 字符串数组
文件扩展名,指定为字符向量、字符向量元胞数组或字符串数组。可以使用空引号 ''
表示不带扩展名的文件。
如果未指定 'FileExtensions'
,则 BlockedFileSet
自动包含所有文件扩展名。
示例: 'FileExtensions','.jpg'
示例: 'FileExtensions',{'.txt','.csv'}
IncludeSubfolders
— 子文件夹包含标记
0
或 false
(默认) | 1
或 true
子文件夹包含标志,指定为数值或逻辑值 1
(true
) 或 0
(false
)。指定 true
可包含每个文件夹中的所有文件和子文件夹,指定 false
则仅包含每个文件夹中的文件。
示例: 'IncludeSubfolders',true
属性
BlockSize
— 分块大小
'file'
(默认) | 数值标量
用于分割文件信息的分块大小(以字节为单位),指定为下列值之一:
'file'
- 使用集合中下一个文件的大小。数值标量 - 使用指定的值(以字节为单位)。
示例: 'BlockSize',2000
AlternateFileSystemRoots
— 备用文件系统根路径
字符串数组 | 元胞数组
备用文件系统根路径,指定为字符串数组或元胞数组。当您在本地计算机上创建数据存储,但需要访问和处理另一台计算机(可能是不同操作系统)上的数据时,请使用 'AlternateFileSystemRoots'
。此外,如果您使用 Parallel Computing Toolbox™ 和 MATLAB® Parallel Server™ 处理数据,而数据存储在本地计算机上并且在不同平台云或集群计算机上存储数据副本,则必须使用 'AlternateFileSystemRoots'
关联根路径。
要关联一组等效的根路径,请将
'AlternateFileSystemRoots'
指定为字符串数组。例如,["Z:\datasets","/mynetwork/datasets"]
要将在数据存储方面等效的多组根路径关联起来,请将
'AlternateFileSystemRoots'
指定为包含多个行的元胞数组,其中每一行代表一组等效的根路径。将元胞数组中的每一行指定为一个字符串数组或字符向量元胞数组。例如:将
'AlternateFileSystemRoots'
指定为字符串数组构成的元胞数组。{["Z:\datasets", "/mynetwork/datasets"];... ["Y:\datasets", "/mynetwork2/datasets","S:\datasets"]}
也可以将
'AlternateFileSystemRoots'
指定为字符向量元胞数组。{{'Z:\datasets','/mynetwork/datasets'};... {'Y:\datasets', '/mynetwork2/datasets','S:\datasets'}}
'AlternateFileSystemRoots'
的值必须满足以下条件:
包含一行或多行,每一行指定一组等效的根路径。
每一行指定多个根路径,每个根路径必须至少包含两个字符。
根路径是唯一的,并且不是彼此的子文件夹。
包含至少一个指向文件位置的根路径条目。
有关详细信息,请参阅Set Up Datastore for Processing on Different Machines or Clusters。
示例: ["Z:\datasets","/mynetwork/datasets"]
数据类型: string
| cell
NumBlocks
— 分块数
数值标量
此 属性 为只读。
分块文件集对象中的分块数,指定为数值标量。
示例: bs.NumBlocks
数据类型: double
NumBlocksRead
— 读取的分块数
数值标量
此 属性 为只读。
从 BlockedFileSet
对象读取的分块数,指定为数值标量。
示例: bs.NumBlocksRead
数据类型: double
BlockInfo
— 有关分块的信息
matlab.io.datastore.BlockedInfo
对象
此 属性 为只读。
有关 matlab.io.datastore.BlockedFileSet
对象中分块的信息,以 matlab.io.datastore.BlockedInfo
对象形式返回,具有以下属性:
Filename
-BlockedFileSet
对象中文件的名称。该名称包含文件的完整路径。FileSize
- 文件的大小(以字节为单位)。Offset
- 要读取的文件内的起始偏移量。BlockSize
- 分块的大小(以字节为单位)。
如需有关特定分块的信息,请指定分块索引。例如,bs.BlockInfo(2)
返回第二个分块的信息。如果在指定 (:)
或不指定索引的情况下调用 bs.BlockInfo
,它将返回所有模块的信息。
示例: bs.BlockInfo(2)
对象函数
hasPreviousBlock | 确定分块文件集是否有上一个分块 |
previousblock | 关于分块文件集中上一个分块的信息 |
hasNextBlock | 确定分块文件集是否有其他分块 |
nextblock | 有关分块文件集中下一个分块的信息 |
progress | 确定已读取多少分块或文件 |
maxpartitions | 最大分区数 |
partition | 划分文件集对象 |
subset | 创建数据存储或 FileSet 的子集 |
reset | 重置文件集对象 |
示例
创建分块文件集并获取所有文件的信息
创建分块文件集,并查询分块文件集中特定分块的信息。
为一组文件创建一个分块文件集 bs
,并指定分块大小。
folder = {'accidents.mat','airlineResults.mat','census.mat','earth.mat'}
folder = 1x4 cell
{'accidents.mat'} {'airlineResults.mat'} {'census.mat'} {'earth.mat'}
bs = matlab.io.datastore.BlockedFileSet(folder,'BlockSize',2000)
bs = BlockedFileSet with properties: NumBlocks: 98 NumBlocksRead: 0 BlockSize: 2000 BlockInfo: BlockInfo for all 98 blocks AlternateFileSystemRoots: {}
使用 nextblock
函数或通过查询 BlockInfo
属性并指定索引来获取特定分块的信息。使用 nextblock
获取连续分块的信息。例如,获取分块文件集中前两个分块的信息。
blk1 = nextblock(bs)
blk1 = 1x1 BlockInfo Filename FileSize Offset BlockSize ________________________________________________________________________________________________________ ________ ______ _________ "/mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2528353/build/matlab/toolbox/matlab/demos/accidents.mat" 7343 0 2000
blk2 = nextblock(bs)
blk2 = 1x1 BlockInfo Filename FileSize Offset BlockSize ________________________________________________________________________________________________________ ________ ______ _________ "/mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2528353/build/matlab/toolbox/matlab/demos/accidents.mat" 7343 2000 2000
查询 BlockInfo
属性,获取有关分块文件集中最后一个分块的信息。
lastblk = bs.BlockInfo(98)
lastblk = 1x1 BlockInfo Filename FileSize Offset BlockSize ____________________________________________________________________________________________________ ________ ______ _________ "/mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2528353/build/matlab/toolbox/matlab/demos/earth.mat" 32522 32000 522
版本历史记录
在 R2020a 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)