主要内容

matlab.io.datastore.Partitionableclass

包:matlab.io.datastore

并行化的支持添加到数据存储中金宝app

描述

matlab.io.datastore.Partitionable是一个抽象的mixin类,增加了并行支持您的自定义数据存储和并行计算工具箱™和使用吗金宝appMATLAB®并行服务器™

要使用这个mixin类,您必须继承matlab.io.datastore.Partitionable类,除了继承matlab.io.Datastore基类。输入以下语法作为类定义的第一行文件:

classdef MyDatastore < matlab.io。数据存储&……matlab.io.datastore.Partitionable…结束

添加定制数据存金宝app储支持并行处理,您必须:

为更多的细节和步骤来创建自定义数据存储和并行处理的支持,看到的金宝app开发自定义数据存储

方法

maxpartitions 最大数量的分区
numpartitions 默认的分区数量
分区 分区数据存储

属性

密封

类属性的信息,请参阅类属性

例子

全部折叠

构建一个数据存储和并行处理的支持和使用它来将您的自定义或专有数据到MATLAB®。金宝app然后,并行处理数据池。

创建一个。m类定义文件,其中包含的代码实现您的自定义数据存储。你必须保存这个文件在您的工作目录或文件夹,在MATLAB®路径。的名称。m文件必须与你的对象构造函数的名称。例如,如果你想让你的构造函数名称MyDatastorePar,然后的名称。m文件必须MyDatastorePar.m。的。m类定义文件必须包含以下步骤:

  • 步骤1:从数据存储类继承。

  • 第二步:定义构造函数和所需的方法。

  • 第三步:定义您的自定义文件阅读功能。

除了这些步骤,定义其他属性或方法,你需要处理和分析你的数据。

% %步骤1:从数据存储类继承classdefMyDatastorePar < matlab.io。数据存储和matlab.io.datastore.Partitionable属性(访问=私人)CurrentFileIndex文件集matlab.io.datastore.DsFileSet结束%属性支持储蓄、加载和处理金宝app%或集群文件系统数据存储在不同的机器。%此外,定义方法get.AlternateFileSystemRoots ()%和set.AlternateFileSystemRoots()方法部分。属性(依赖)AlternateFileSystemRoots结束% %步骤2:定义构造函数和所需的方法方法%定义数据存储的构造函数函数myds = MyDatastorePar(位置,altRoots) myds。文件集= matlab.io.datastore.DsFileSet(location,“FileExtensions”,“。斌”,“FileSplitSize”8 * 1024);myds。CurrentFileIndex = 1;如果输入参数个数= = 2 myds。AlternateFileSystemRoots = altRoots;结束重置(myds);结束%定义hasdata方法函数tf = hasdata (myds)%返回true,如果更多的数据是可用的tf = hasfile (myds.FileSet);结束%定义读取方法函数(数据、信息)=阅读(myds)%读取数据和信息提取的数据%参见:MyFileReader ()如果~ hasdata (myds) msgII = (使用复位方法重置数据存储的,“数据的开始。”];msgIII = [在调用读方法之前,,检查数据是否可读的,“通过使用hasdata方法。”];错误(没有更多的数据阅读。\ n % s \ n % s的、msgII msgIII);结束fileInfoTbl = nextfile (myds.FileSet);data = MyFileReader (fileInfoTbl);信息。大小=大小(数据);信息。文件名= fileInfoTbl.FileName;信息。抵消= fileInfoTbl.Offset;%更新CurrentFileIndex跟踪进展如果fileInfoTbl。抵消+ fileInfoTbl。SplitSize > =fileInfoTbl。文件大小myds。CurrentFileIndex = myds。CurrentFileIndex + 1;结束结束%定义的复位方法函数重置(myds)%开始重置数据重置(myds.FileSet);myds。CurrentFileIndex = 1;结束%定义分区方法函数再分=分区(myds, n, 2)再分= (myds)复印件;再分。文件集=分区(myds.FileSet n ii);重置(再分);结束% Getter AlternateFileSystemRoots财产函数altRoots = get.AlternateFileSystemRoots (myds) altRoots = myds.FileSet.AlternateFileSystemRoots;结束% AlternateFileSystemRoots属性的Setter函数set.AlternateFileSystemRoots (myds altRoots)试一试%管理AlternateFileSystemRoots DsFileSet对象%为您的数据存储myds.FileSet。AlternateFileSystemRoots = altRoots;%重置数据存储重置(myds);我把(我);结束结束结束方法(隐藏= true)%定义方法的进展函数压裂=进步(myds)%的比例确定数据读取数据存储如果hasdata (myds)压裂= (myds.CurrentFileIndex-1) /myds.FileSet.NumFiles;其他的压裂= 1;结束结束结束方法(访问=保护)%如果使用数据存储的文件集的属性,%然后您必须定义copyElement方法。的% copyElement方法允许readall等方法%,预览是无状态的函数dscopy = copyElement (ds) dscopy = copyElement@matlab.mixin.Copyable (ds);dscopy。文件集= (ds.FileSet)复印件;结束%定义maxpartitions方法函数n = maxpartitions (myds) n = maxpartitions (myds.FileSet);结束结束结束% %步骤3:实现您的自定义文件阅读功能函数data = MyFileReader (fileInfoTbl)%使用文件名创建一个读者对象读者= matlab.io.datastore.DsFileReader (fileInfoTbl.FileName);%寻求偏移量寻求(读者,fileInfoTbl.Offset“起源”,“start-of-file”);% fileInfoTbl阅读。SplitSize的数据量data =阅读(读者,fileInfoTbl.SplitSize);结束

您的自定义数据存储现在准备好了。使用自定义数据存储中的数据读取和处理一个平行的池。

使用自定义数据存储预览和阅读您的专有数据到MATLAB进行并行处理。

这个例子使用一个简单的数据集来说明一个工作流使用您的自定义数据存储。15个二进制的数据集是一组(。斌)文件,每个文件包含一个列(1变量)和10000年行(记录)的无符号整数。

dir (“*。斌”)
binary_data01。本binary_data02。本binary_data03。本binary_data04。本binary_data05。本binary_data06。本binary_data07。本binary_data08。本binary_data09。本binary_data10。本binary_data11。本binary_data12。本binary_data13。本binary_data14。本binary_data15.bin

创建一个数据存储对象使用MyDatastorePar函数。的实现细节MyDatastorePar,请参阅示例构建数据存储和并行处理的支持金宝app

文件夹= fullfile (“*。斌”);ds = MyDatastorePar(文件夹);

预览数据存储的数据。

预览(ds)
ans =8 x1 uint8列向量113 180 251 91 66 254 214

确定你的数据存储分区的数量。如果你有并行计算工具箱(PCT),那么你可以使用n = numpartitions (ds, myPool),在那里myPoolgcpparpool

n = numpartitions (ds);

分区数据存储到n部件和n工人在一个平行的池。

parfor2 = 1:n再分=分区(n, ds ii);hasdata(再分)数据=阅读(再分);%做某事结束结束

处理你的数据存储和并行计算和分布式计算涉及到不同平台云或集群机器,你必须预定义“AlternateFileSystemRoots”参数。例如,在本地机器上创建一个数据存储和分析数据的一小部分。然后,扩大你的分析使用并行计算工具箱,整个数据集MATLAB并行服务器

创建一个数据存储使用MyDatastorePar和赋值“AlternateFileSystemRoots”财产。的实现细节MyDatastorePar,请参阅示例构建数据存储和并行处理的支持金宝app

设置的值“AlternateFileSystemRoots”为您的数据属性,确定根路径在不同的平台上。根路径不同基于机器或文件系统。例如,如果您使用这些根路径:访问您的数据

  • “Z: \数据集”从窗户®机器。

  • “nfs-bldg001 /数据集”MATLAB并行服务器Linux®集群。

然后,将使用这些根路径AlternateFileSystemRoots财产。

altRoots = [“Z: \数据集”,“nfs-bldg001 /数据集”];ds = MyDatastorePar (Z: \数据集的,altRoots);

分析的一小部分数据在本地机器上。例如,得到一个数据的分区的子集和清洁的数据通过移除任何缺失的条目。然后,检查变量的一个阴谋。

tt =高(分区(ds 100 1));总结(tt);%分析你的数据tt = rmmissing (tt);情节(tt.MyVar1 tt.MyVar2)

扩大你的分析对整个数据集使用MATLAB并行服务器集群(Linux集群)。例如,开始一个工人池使用集群的配置文件,然后对整个数据集进行分析通过使用并行和分布式计算能力。

parpool (“MyMjsProfile”)tt =高(ds);总结(tt);%分析你的数据tt = rmmissing (tt);情节(tt.MyVar1 tt.MyVar2)

提示

  • 对于您的自定义数据存储实现,最佳实践是没有实现numpartitions方法。

版本历史

介绍了R2017b