主要内容

matlab.io.datastore.HadoopLocationBased类

包:matlab.io.datastore

添加Hadoop万博1manbetx支持数据存储

描述

matlab.io.datastore.HadoopLocationBased是一个抽象的mixin类添加Hadoop®万博1manbetx支持存储在文件或其他非基于文件的数据源(如数据库)中的数据。

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

classdef MyDatastore < matlab.io.Datastore &…matlab.io.datastore.HadoopLocationBased……结束

要添加Hadoop支持和并行万博1manbetx处理支持,请在类定义文件中使用以下行:

classdef MyDatastore < matlab.io.Datastore &…matlab.io.datastore.Partitionable &……matlab.io.datastore.HadoopLocationBased……结束

要在自定义数据万博1manbetx存储中添加对Hadoop的支持,您必须:

有关创建支持Hadoop的自定义数据存储的详细信息和步骤,请参见万博1manbetx开发自定义数据存储

方法

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

属性

密封

有关类属性的信息,请参见类属性

例子

全部折叠

实现一个具有并行处理和Hadoop支持的数据存储,并使用它将您的数据从Hadoop服务器带到MATLAB万博1manbetx®.然后使用收集在这个数据上的功能。

创建一个新的.m类定义文件,该文件包含实现自定义数据存储的代码。您必须将此文件保存在您的工作文件夹或MATLAB路径上的文件夹中。公司的名称.m文件必须与对象构造函数的名称相同。例如,如果您希望构造函数具有该名称MyDatastoreHadoop,则脚本文件的名称必须为MyDatastoreHadoop.m.的.m类定义文件必须包含以下步骤:

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

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

  • 步骤3:定义自定义的文件读取功能。

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

步骤1:从数据存储类继承classdefMyDatastoreHadoop < matlab.io.Datastore &...matlab.io.datastore.Partitionable &...matlab.io.datastore.HadoopLocationBased属性(Access = private) CurrentFileIndex文件集matlab.io.datastore.DsFileSet结束步骤2:定义构造函数和所需的方法方法定义数据存储构造函数函数myds = MyDatastoreHadoop(location,altRoots)文件集= matlab.io.datastore.DsFileSet(位置,...“FileExtensions”“。斌”...“FileSplitSize”8 * 1024);myds。CurrentFileIndex = 1;如果Nargin == 2 myds。AlternateFileSystemRoots = altRoots;结束重置(myds);结束定义hasdata方法函数tf = hasdata (myds)%如果有更多可用数据则返回truetf = hasfile (myds.FileSet);结束%定义读取方法函数(数据、信息)=阅读(myds)读取数据和提取数据的相关信息%参见:MyFileReader()如果~ hasdata (myds)错误(sprintf ([“没有更多的数据要读了。\nUse the reset '...方法将数据存储重置为'...的数据。\n在调用read方法之前,...'检查数据是否可用来读取'...'通过使用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;结束%定义分区方法函数Subds = partition(myds,n,ii); / /分区再分。文件集=分区(myds.FileSet n ii);重置(再分);结束结束方法(隐藏= true)定义进度方法函数压裂=进步(myds)%确定从数据存储读取数据的百分比如果hasdata(myds) frac = (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方法函数myds.FileSet.FileSplitSize文件大小“文件”);结束结束方法(访问=保护)%如果您在数据存储中使用FileSet属性,%则必须定义copelement方法。的% copelement方法允许像readall这样的方法%和预览保持无状态函数dscopy = copelement (ds);dscopy。文件集= (ds.FileSet)复印件;结束定义maxpartitions方法函数n = maxpartitions(myds. fileset);结束结束结束步骤3:实现您的自定义文件读取功能函数data = MyFileReader (fileInfoTbl)%使用FileName创建一个读取器对象读者= matlab.io.datastore.DsFileReader (fileInfoTbl.FileName);寻找偏移量寻求(读者,fileInfoTbl。抵消,“起源”“start-of-file”);% fileInfoTbl阅读。SplitSize数据量data =阅读(读者,fileInfoTbl.SplitSize);结束

这一步完成了自定义数据存储的实现。

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

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

使用数组和收集功能,在Apache Spark™上配置并行集群配置mapreduce并附上MyDatastoreHadoop.m集群。

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

从数据存储创建高数组。

t =高(ds);

集合高阵的头。

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

介绍了R2019a