本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

partition

划分数据存储

说明

示例

subds = partition(ds,n,index) 将数据存储 ds 划分为由 n 指定的数量的部分,并返回与索引 index 对应的分区。

示例

subds = partition(ds,'Files',index) 按文件划分数据存储,并返回与 Files 属性中索引 index 的文件对应的分区。

subds = partition(ds,'Files',filename) 按文件划分数据存储,并返回与 filename 所指定的文件相对应的分区。

示例

全部折叠

为大型文件集合创建数据存储。对于此示例,请使用示例文件 airlinesmall.csv 的十个副本。要处理表格数据中的缺失字段,请指定名称-值对组 TreatAsMissingMissingValue

files = repmat({'airlinesmall.csv'},1,10);
ds = tabularTextDatastore(files,...
                 'TreatAsMissing','NA','MissingValue',0);

将数据存储划分为三个部分并返回第一个分区。partition 函数返回数据存储 ds 中大约三分之一的数据。

subds = partition(ds,3,1)
subds = 
  TabularTextDatastore with properties:

                      Files: {
                             ' ...\matlab\toolbox\matlab\demos\airlinesmall.csv';
                             ' ...\matlab\toolbox\matlab\demos\airlinesmall.csv';
                             ' ...\matlab\toolbox\matlab\demos\airlinesmall.csv'
                              ... and 1 more
                             }
               FileEncoding: 'UTF-8'
   AlternateFileSystemRoots: {}
          ReadVariableNames: true
              VariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more}

  Text Format Properties:
             NumHeaderLines: 0
                  Delimiter: ','
               RowDelimiter: '\r\n'
             TreatAsMissing: 'NA'
               MissingValue: 0

  Advanced Text Format Properties:
            TextscanFormats: {'%f', '%f', '%f' ... and 26 more}
                   TextType: 'char'
         ExponentCharacters: 'eEdD'
               CommentStyle: ''
                 Whitespace: ' \b\t'
    MultipleDelimitersAsOne: false

  Properties that control the table returned by preview, read, readall:
      SelectedVariableNames: {'Year', 'Month', 'DayofMonth' ... and 26 more}
            SelectedFormats: {'%f', '%f', '%f' ... and 26 more}
                   ReadSize: 20000 rows

数据存储的 Files 属性包含该数据存储中所包含文件的列表。检查数据存储 ds 和分区后的数据存储 subdsFiles 属性中的文件数。数据存储 ds 包含十个文件,分区 subds 包含前四个文件。

length(ds.Files)
ans = 10
length(subds.Files)
ans = 4

根据示例文件 mapredout.matmapreduce 函数的输出文件)创建一个数据存储。

ds = datastore('mapredout.mat');

ds 获取默认数量的分区。

n = numpartitions(ds);

将数据存储划分到默认数量的分区中并返回与第一个分区对应的数据存储。

subds = partition(ds,n,1);

读取 subds 中的数据。

while hasdata(subds)
	data = read(subds);
end

创建一个包含三个图像文件的数据存储。

ds = imageDatastore({'street1.jpg','peppers.png','corn.tif'})
ds = 

  ImageDatastore with properties:

       Files: {
              ' ...\matlab\toolbox\matlab\demos\street1.jpg';
              ' ...\matlab\toolbox\matlab\imagesci\peppers.png';
              ' ...\matlab\toolbox\matlab\imagesci\corn.tif'
              }
    ReadSize: 1
      Labels: {}
     ReadFcn: @readDatastoreImage

按文件划分数据存储并返回与第二个文件对应的部分。

subds = partition(ds,'Files',2)
subds = 

  ImageDatastore with properties:

       Files: {
              ' ...\matlab\toolbox\matlab\imagesci\peppers.png'
              }
    ReadSize: 1
      Labels: {}
     ReadFcn: @readDatastoreImage

subds 包含一个文件。

根据示例文件 mapredout.matmapreduce 函数的输出文件)创建一个数据存储。

ds = datastore('mapredout.mat');

将数据存储划分为并行池中的三个工作进程的 3 个部分。

numWorkers = 3;
p = parpool('local',numWorkers);
n = numpartitions(ds,p);

parfor ii=1:n
    subds = partition(ds,n,ii);
    while hasdata(subds)
        data = read(subds);
    end
end

输入参数

全部折叠

输入数据存储。可以使用 datastore 函数根据您的数据创建数据存储对象。

分区数量,指定为正整数。

示例: 3

数据类型: double

索引,指定为正整数。

示例: 1

数据类型: double

文件名,指定为字符向量或字符串标量。

filename 的值必须与数据存储的 Files 属性包含的文件名完全匹配。要确保文件名完全匹配,请使用 ds.Files{N} 指定 filename,其中 NFiles 属性中的文件的索引。例如,ds.Files{3} 指定数据存储 ds 中的第三个文件。

示例: ds.Files{3}

示例: 'file1.csv'

示例: '../dir/data/file1.csv'

示例: 'hdfs://myserver:7867/data/file1.txt'

数据类型: char

输出参数

全部折叠

输出数据存储。输出数据存储的类型与输入数据存储 ds 的类型相同。

另请参阅

|

主题

在 R2015a 中推出