MapReduce的

编程技术分析不适合在内存中的数据集

描述

outds=映射精简(DSmapfunreducefun适用于地图功能mapfun输入数据存储DS,然后通过与每个唯一密钥,以减少功能相关联的值reducefun。输出数据存储是一种KeyValueDatastore反对该点。垫文件在当前文件夹。

outds=映射精简(DSmapfunreducefun先生任选地指定用于运行时配置设置MapReduce的。该先生输入是对一个呼叫的结果mapreducer功能。通常情况下,这种说法被用于并行计算工具箱™,MATLAB®并行服务器™, 要么MATLAB编译器™。欲了解更多信息,请参阅加快和部署MapReduce的使用的其他产品下载188bet金宝搏

outds=映射精简(___名称,值与一个或多个指定的附加选项名称,值使用任何以前的语法对参数。例如,您可以指定'导出目录'随后通过指定到输出文件夹的路径的字符向量。

例子

全部收缩

MapReduce的以计算每个唯一航空公司载体中的数据集由航班数量。

创建使用的数据存储airlinesmall.csv数据集。这12兆字节的数据集包含了几个航空公司的运营商,包括到达和起飞时间的航班信息29列。在这个例子中,选择UniqueCarrier(航空公司名称)作为所关注的变量。指定'TreatAsMissing'名称 - 值对,使得数据存储区对待'NA'值遗漏,并指定'MissingValue'名称 - 值对用零替换缺失值。

DS = tabularTextDatastore('airlinesmall.csv''TreatAsMissing''NA'...'MissingValue',0);ds.SelectedVariableNames ='UniqueCarrier';ds.SelectedFormats ='%C';

预览数据。

预览(DS)
ANS =8×1表UniqueCarrier _____________ PS PS PS PS PS PS PS PS

MapReduce的上的数据。地图和减少功能计数各航空公司运营商名称的实例的数目中的每个数据块,然后再结合这些中间计数到最终计数。该方法通过由执行唯一密钥利用了中间分拣MapReduce的。功能countMappercountReducer包括在这个脚本的结尾。

outds =映射精简(DS,@countMapper,@countReducer);
******** * MapReduce的进展* ********************************地图0%减少0%地图16%减少0%地图32%减少0%地图48%减少0%地图65%降低0%81地图%减少0%地图97%减少0%地图100%减少0%地图100%减少10%地图100%减少21%地图100%减少31%地图100%减少41%地图100%减少52%地图100%减少62%地图100%减少72%地图100%减少83%地图100%减少93%地图100%降低100%
readall(outds)
ANS =29×2表密钥值__________ _________ { 'AA'} {[14930]} { 'AS'} {[2910]} { 'CO'} {[8138]} { 'DL'} {[16578]} { 'EA'} {[920]} { 'HP'} {[3660]} { 'ML(1)'} {[69]} { 'NW'} {[10349]} { 'PA(1)'} {[318]}{ 'P1'} {[871]} { 'PS'} {[83]} { 'TW'} {[3805]} { 'UA'} {[13286]} { 'US'} {[13997]}{ 'WN'} {[15931]} { 'AQ'} {[154]}⋮

地图功能countMapper利用数据是绝对的事实。该countcats类别函数所使用的输入数据的各个块上,以生成航空公司名称和相关联的计数的键/值对。

功能countMapper(数据,信息,intermKV)%计数每个块中唯一的航空公司载体的名称。A = data.UniqueCarrier;C = num2cell(countcats的(a));键=类别(a)的addmulti(intermKV,钥匙,c)中结束

精简函数countReducer读取由映射函数所产生的中间数据,并添加一起所有计数以产生用于每个航空公司载体的单一最终计数。

功能countReducer(键,intermValIter,outKV)从所有块%计数联合收割机生产最终计数。计数= 0;hasnext(intermValIter)数据= GETNEXT(intermValIter);计数=计数+数据;结束加(outKV,键,计数)结束

输入参数

全部收缩

输入数据存储区,指定为数据存储对象。使用数据存储函数来创建您的数据集的数据存储对象。

MapReduce的只与数据存储确定性作品。也就是说,如果你使用在数据存储,恢复与数据存储重启,然后再次读取数据存储,然后返回的数据必须在这两种情况下是相同的。MapReduce的计算涉及的数据存储是不确定性会产生不可预知的结果。看到选择数据存储为文件格式或应用程序想要查询更多的信息。

功能手柄地图功能。mapfun从输入数据存储接收块DS,然后使用addmulti功能键 - 值对添加至中间KeyValueStore目的。调用到地图功能的数MapReduce的等于在块的数目数据存储(块的数量是由所确定的READSIZE数据存储的属性)。

到地图功能的输入是数据信息intermKVStore, 哪一个MapReduce的自动创建和传递给地图功能:

  • 数据信息输入是对一个呼叫的结果功能数据存储, 哪一个MapReduce的每次调用地图功能之前自动执行。

  • intermKVStore是中间的名称KeyValueStore对象,该映射函数需要增加键 - 值对。如果没有调用的地图功能添加键 - 值对的intermKVStore, 然后MapReduce的不会调用减少功能和输出数据存储是空的。

为地图功能的模板的一个例子是

功能myMapper(数据,信息,intermKVStore)%做与该数据块附加的计算(intermKVStore,键,值)端

例:@myMapper

数据类型:function_handle

功能手柄,以减少功能。MapReduce的电话reducefun一次加到中间体每个唯一密钥KeyValueStore通过地图功能。在每次调用,MapReduce的通过与活性键相关联的值reducefun作为一个ValueIterator目的。该reducefun通过使用所述每个密钥值函数环hasnextGETNEXT功能。然后,在执行一些计算(一个或多个)之后,将其写入键 - 值对,以最终输出。

到减少函数的输入是intermKeyintermValIteroutKVStore, 哪一个MapReduce的自动创建和传递到降低功能:

  • intermKey是从中间的活性关键KeyValueStore目的。通过每次调用函数减少MapReduce的指定从按键中间一个新的唯一关键KeyValueStore目的。

  • intermValIter是个ValueIterator与活性键相关联,intermKey。这个ValueIterator对象包含所有与有源键相关联的值的。通过使用该值滚动hasnextGETNEXT功能。

  • outKVStore是最终的名称KeyValueStore对象到的减少功能的需求增加键 - 值对。MapReduce的取从输出键值对outKVStore并返回他们在输出数据存储,outds,这是一个KeyValueDatastore默认对象。如果没有调用reduce函数的最后添加键值对,以outKVStore时,则输出数据存储区是空的。

为模板的例子减少功能

功能myReducer(intermKey,intermValIter,outKVStore)而hasnext(intermValIter)X = GETNEXT(intermValIter);%做的电流值的计算,X端加载(outKVStore,键,值)端

例:@myReducer

数据类型:function_handle

执行环境,指定为MapReducer对象。先生是对一个调用的结果mapreducer功能。默认先生参数是一个电话gcmr,它采用了默认的全局执行环境MapReduce的(在MATLAB默认为mapreducer(0),它返回一个SerialMapReducer目的)。

注意

此设置指定执行环境MapReduce的而没有必要运行MapReduce的在本地计算机上。欲了解更多信息,请参阅加快和部署MapReduce的使用的其他产品下载188bet金宝搏

名称 - 值对参数

指定可选的用逗号分隔的对名称,值参数。名称是参数的名称和是对应的值。名称必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例:outds =映射精简(DS,@mapfun,@reducefun, '显示', '关闭', 'OutputFolder', 'C:\ Users \用户名\桌面')

类型数据存储输出的,指定为“二进制”要么'TabularText'。默认设置“二进制”回报KeyValueDatastore输出数据存储区的是指向二进制(。垫要么.SEQ)文件的输出文件夹。该'TabularText'选项回报tabularTextDatastore数据存储是指向输出。文本文件输出文件夹。

该表提供了每个输出类型的细节。

“输出类型” 数据存储输出类型 数据存储点类型的文件 值的Reduce函数可以添加 关键的是,Reduce函数可以添加 细节
“二进制”(默认) KeyValueDatastore 。垫(要么.SEQ针对Hadoop的运行时®)。 任何有效的MATLAB对象。 特征向量,字符串或数字标量是不为NaN的,复杂的,逻辑的,或稀疏。 N / A
'TabularText' TabularTextDatastore 。文本 特征向量,字符串或数字标量是不为NaN的,复杂的,逻辑的,或稀疏。 特征向量,字符串或数字标量是不为NaN的,复杂的,逻辑的,或稀疏。
  • 文件是UTF-8编码。

  • 键和值是标签(\ t)分离。

  • 该行分隔符是\ r \ n在Windows®\ n在Linux上®苹果电脑

数据类型:烧焦|

对目标文件夹MapReduce的输出,指定为文件路径。默认的输出文件夹是当前文件夹,PWD。你可以用一个完全合格的路径或相对于当前文件夹的路径指定一个不同的路径。

例:MapReduce的(..., 'OutputFolder', 'MyOutputFolder \结果')指定相对于输出当前文件夹的文件路径。

数据类型:烧焦|

切换命令行进度输出,指定为'上'要么“关”。默认值是'上', 以便MapReduce的显示在地图上的进展期间在命令窗口信息和减少执行的阶段。

数据类型:烧焦|

输出参数

全部收缩

输出数据存储,返回为KeyValueDatastore要么TabularTextDatastore目的。默认,outdsKeyValueDatastore反对该点。垫文件在当前文件夹。使用名称,值对论据“输出类型”'导出目录'返回一个tabularTextDatastore对象或改变输出文件的位置,分别。

MapReduce的在键值对不排序outds。使用其他产品时,它们的顺序可能会有所不同下载188bet金宝搏MapReduce的

要查看的内容outds, 使用预习, 要么readall功能数据存储

提示

  • 调试MapReduce的算法来检查键值对通过不同的阶段动怎么总是有用的。为了检验数据的地图中的运动,设置断点和减少功能。的断点停止执行MapReduce的,让你检查相关变量的当前状态,如KeyValueStore要么ValueIterator。欲了解更多信息,请参阅调试的MapReduce算法

  • 为了优化的一些建议MapReduce的在任何平台上表现是:

    • 最小化调用地图功能的数量。最简单的方法是增加的价值READSIZE输入数据存储的性能。其结果是,MapReduce的传递较大的数据到地图功能的块,并且数据存储区消耗较少的读取。

    • 减少地图之间发送中间数据的量和减少的功能。一种方法是使用独特一个地图功能里面类似的按键组合。看到计算是指由集团使用的MapReduce这种技术的一个例子。

扩展功能

介绍了在R2014b