主要内容

matlab.io.datastore.HadoopLocationBasedclass

包:matlab.io.datastore

添加Hadoop金宝app支持数据存储

自从R2019a

描述

matlab.io.datastore.HadoopLocationBasedHadoop是一个抽象的mixin类,增加了吗®金宝app支持数据存储在文件中,比如数据库或其他可能的数据源。

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

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

随着添加Hadoop支持并行金宝app处理的支持,在您的类定义中使用这些线文件:

classdef MyDatastore < matlab.io。数据存储&……matlab.io.datastore.Partitionable& ... matlab.io.datastore.HadoopLocationBased ... end

将对Hadoo金宝appp的支持添加到您的自定义数据存储,你必须:

为更多的细节和步骤来创建自定义数据存储支持Hadoop,明白了金宝app开发自定义数据存储

方法

getLocation 在Hadoop的位置
initializeDatastore 初始化数据存储的信息Hadoop
isfullfile 检查是否数据存储读取完整的文件

属性

密封

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

例子

全部折叠

实现数据存储和并行处理和Hadoop支持和用它来把你的数据从Hadoop服务器到MATLAB金宝app®。然后使用收集函数在这个数据。

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

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

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

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

这个代码显示了一个示例中的三个步骤实现一个自定义的数据存储,可以从一个Hadoop服务器读取二进制文件。

% %步骤1:从数据存储类继承classdefMyDatastoreHadoop < matlab.io。数据存储和matlab.io.datastore.Partitionable&matlab.io.datastore.HadoopLocationBased属性(访问=私人)CurrentFileIndex文件集matlab.io.datastore.DsFileSet结束% %步骤2:定义构造函数和所需的方法方法%定义数据存储的构造函数函数myds = MyDatastoreHadoop(位置,altRoots) myds。文件集= matlab.io.datastore.DsFileSet(位置,“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)错误(sprintf ([没有更多的数据来读。\ nUse重置”,的方法来重置数据存储的开始,的数据。\ nBefore调用读方法,,检查数据是否可读的,“通过使用hasdata方法。”)))结束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);重置(再分);结束结束方法(隐藏= true)%定义方法的进展函数压裂=进步(myds)%的比例确定数据读取数据存储如果hasdata (myds)压裂= (myds.CurrentFileIndex-1) /myds.FileSet.NumFiles;其他的压裂= 1;结束结束%定义initializeDatastore方法函数initializeDatastore (myds hadoopInfo)导入matlab.io.datastore.DsFileSet;myds。文件集= DsFileSet (hadoopInfo,“FileSplitSize”myds.FileSet.FileSplitSize,“IncludeSubfolders”,真的,“FileExtensions”,“。斌”);重置(myds);结束%定义getLocation方法函数loc = getLocation (myds) loc = myds.FileSet;结束%定义isfullfile方法函数tf = isfullfile (~) tf = isequal (myds.FileSet.FileSplitSize,“文件”);结束结束方法(访问=保护)%如果使用数据存储的文件集的属性,%然后您必须定义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);结束

这个步骤完成您的自定义数据存储的实现。

接下来,创建一个使用您的自定义数据存储数据存储对象的构造函数。如果您的数据位于hdfs: / / / path_to_files,那么你可以使用这个代码。

setenv (' HADOOP_HOME ', ' / / / hadoop /安装);ds = MyDatastoreHadoop ('hdfs: / / / path_to_files”);

使用数组和收集函数Apache®火花™并行集群配置,设置mapreduce并附上MyDatastoreHadoop.m集群。

= mapreduce先生(集群);mr.Cluster。AttachedFiles =“MyDatastoreHadoop.m”;

从数据存储创建高数组。

t =高(ds);

收集的高数组。

高清=收集(头(t));

版本历史

介绍了R2019a