主要内容

mapreduce.

用于分析不适合内存的数据集的编程技术

描述

例子

out= mapreduce (ds,mapfun,reyalfun.应用映射功能mapfun输入数据存储ds然后通过与每个唯一键相关联的值来减少函数reyalfun..输出数据存储为KeyValuedAtastore.指向的对象。垫文件在当前文件夹中。

out= mapreduce (ds,mapfun,reyalfun.,先生可选地指定运行时配置设置mapreduce..的先生输入是呼叫的结果Maprecucer.功能。通常,此参数用于并行计算工具箱™,马铃薯草®并行服务器™, 或者MATLAB编译器™.有关更多信息,请参阅使用其他产品加速和部署MapReduce下载188bet金宝搏

out= mapreduce (___,名称,值指定一个或多个附加选项名称,值使用以前的任何语法对参数。例如,您可以指定'导出目录'后面是一个字符向量,指定到输出文件夹的路径。

例子

全部折叠

mapreduce.计算每个唯一航空公司在数据集中制作的航班数量。

使用该数据存储使用Airlinesmall.csv.数据集。此12兆字节数据集包含多个航空公司运营商的29列航班信息,包括到达和出发时间。在此示例中,选择UniqueCarrier(航空公司名称)作为感兴趣的变量。指定“TreatAsMissing”名称值对以便数据存储态度'na'值丢失,并指定'遗漏了名称值对用零替换缺失值。

ds = tabularTextDatastore ('airlinesmall.csv',“TreatAsMissing”,'na',......'遗漏了,0);ds.selectedvariablenames ='unqueCarrier';ds。SelectedFormats ='%C'

预览数据。

预览(DS)
ANS =.8×1表唯一运营商_____________ PS PS PS PS PS PS PS PS PS PS PS PS PS PS PS PS PS PS

mapreduce.上的数据。map和reduce函数计算每个数据块中每个航空公司名称的实例数,然后将这些中间计数合并为最终计数。该方法利用中间排序的唯一键执行mapreduce..的函数countmapper.乡村人包含在此脚本的末尾。

outds = mapreduce(ds,@countmapper,@countreducer);
******************************** * MAPREDUCE的进展  * ******************************** 地图地图16%减少0% 32% 0%减少0%减少0%地图48%减少0% 65%减少0%地图地图97%减少0% 100% 81%减少0%减少0%地图100%减少10% 100%减少21%地图100%减少31% 100%减少41%地图100%减少52%减少100%62%地图100%减少72%地图100%减少83%地图100%减少93%地图100%减少100%
读数(odds)
ANS =.29日×2表键值  __________ _________ {' AA’}{[14930]}{”“}{[2910]}{‘公司’}{[8138]}{“DL”}{[16578]}{' EA}{[920]}{“惠普”}{[3660]}{毫升(1)的}{[69]}{“西北”}{[10349]}{的PA(1)}{[318]}{“π”}{[871]}{“PS”}{[83]}{TW的}{[3805]}{UA的}{[13286]}{‘我们’}{[13997]}{的WN} {[15931]} {AQ的}{[154]}⋮

地图功能countmapper.利用数据是分类的事实。的countcats类别在输入数据的每个块上使用函数以生成航空公司名称和关联计数的键/值对。

功能CountMapper(数据,信息,Intermkv)%在每个块中计算唯一的航空公司载体名称。a = data.unquecarrier;c = num2cell(countcats(a));键=类别(a);AddMulti(Intermkv,Keys,C)结束

减少功能乡村人读取由地图函数产生的中间数据,并将所有计数器一起添加以产生每个航空公司载体的单个最终计数。

功能康宾机(关键,Intermvaliter,Outkv)%合并来自所有区块的计数以产生最终计数。count = 0;尽管hasnext(Intermvaliter)Data = GetNext(Intermvalirt);count = count +数据;结束添加(outKV,钥匙,计数)结束

输入参数

全部折叠

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

mapreduce.仅适用于确定性的数据存储。也就是说,如果你使用在数据存储上,重置数据存储重启,然后再次读取数据存储,则在两种情况下返回的数据必须相同。mapreduce.涉及非确定性的数据存储的计算可以产生不可预测的结果。看选择文件格式或应用程序的数据存储想要查询更多的信息。

映射函数的功能句柄。mapfun从输入数据存储接收块ds,然后使用添加addmulti将键值对添加到中间体的函数KeyValueStore对象。调用map函数的次数mapreduce.等于块中的块数数据存储(块的数量由阅读数据存储的属性)。

映射函数的输入是数据,信息, 和intermKVStore, 哪一个mapreduce.自动创建并传递到地图功能:

  • 数据信息的输入是调用的结果的函数数据存储, 哪一个mapreduce.在每个调用地图函数之前自动执行。

  • intermKVStore是中间人的名称KeyValueStore地图功能需要添加密钥值对的对象。如果没有对地图函数的调用,则添加密钥值对intermKVStore,然后mapreduce.不调用Reals函数,输出数据存储为空。

地图函数的模板的示例是

函数mymapper(数据,信息,Intermkvstore)%使用数据块添加(IntermkVstore,Key,Value)结束

例子:@mymapper.

数据类型:function_handle

函数句柄来减少函数。mapreduce.调用reyalfun.一旦为中间添加到中间的每个唯一键KeyValueStore通过地图函数。在每个电话,mapreduce.传递与活动密钥关联的值reyalfun.作为一个验证者对象。的reyalfun.函数循环通过每个键的值使用hasnextgetnext功能。然后,在执行一些计算之后,它将键值对写入最终输出。

减少功能的输入是intermKey,intermvaliter., 和outkvstore., 哪一个mapreduce.自动创建并传递给Realsue功能:

  • intermKey是来自中间的活动钥匙KeyValueStore对象。每个呼叫减少功能mapreduce.从中间键中指定一个新的唯一键KeyValueStore对象。

  • intermvaliter.是个验证者与活动密钥相关联,intermKey.这个验证者对象包含与活动键关联的所有值。的滚动值hasnextgetnext功能。

  • outkvstore.是最终的名称KeyValueStore降低功能需要添加密钥值对的对象。mapreduce.从中获取输出键值对outkvstore.并将它们返回输出数据存储,out,这是一个KeyValuedAtastore.默认情况下对象。如果没有对Realy函数的调用,则添加最终的键值对outkvstore.,然后输出数据存储为空。

减少函数的模板的一个例子是

函数myReducer(intermKey, intermValIter, outKVStore) while hasnext(intermValIter) X = getnext(intermValIter);使用当前值进行计算,添加(outKVStore, key, value) end

例子:@myReducer

数据类型:function_handle

执行环境,指定为MapReducer对象。先生是呼叫的结果Maprecucer.功能。默认值先生论点是一个电话GCMR.,它使用默认的全局执行环境mapreduce.(在matlab中默认为mapreduce (0),则返回serialmapreducer.目的)。

请注意

此设置指定执行环境mapreduce.也不需要跑mapreduce.在您当地的计算机上。有关更多信息,请参阅使用其他产品加速和部署MapReduce下载188bet金宝搏

名称-值参数

指定可选的逗号分隔的对名称,值论点。姓名参数名和价值是相应的价值。姓名必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:outds = mapreduce(ds, @mapfun, @reducefun, 'Display', 'off', 'OutputFolder', 'C:\Users\username\Desktop')

数据存储类型输出,指定为'二进制'或者'tabulartext'.默认设置'二进制'返回一个KeyValuedAtastore.输出数据存储指向二进制(。垫或者.Seq.)输出文件夹中的文件。的'tabulartext'选项返回A.tabulartextdatastore.指向的输出数据存储。文本文件在输出文件夹中。

该表提供了每个输出类型的详细信息。

“OutputType” 数据存储类型输出 数据存储指向类型的文件 减少函数可以添加的值 Reduce函数可以添加的键 细节
'二进制'(默认) KeyValuedAtastore. 。垫(或.Seq.跑到Hadoop时®). 任何有效的MATLAB对象。 字符向量,字符串或数字标量、复杂的、逻辑的或稀疏的。 N / A.
'tabulartext' tabulartextdatastore. 。文本 字符向量,字符串或数字标量、复杂的、逻辑的或稀疏的。 字符向量,字符串或数字标量、复杂的、逻辑的或稀疏的。
  • 文件是UTF-8编码。

  • 键和值是tab (T.)分开。

  • 行分隔符是\ r \ n在Windows上®, 和\ n ..在Linux上®Mac

数据类型:char|细绳

目标文件夹mapreduce.输出,指定为文件路径。默认输出文件夹是当前文件夹,PWD.您可以使用完全限定路径或相对于当前文件夹的路径指定不同的路径。

例子:mapreduce(...,'outputfolder','myoutputfolder \结果')指定相对于输出的当前文件夹的文件路径。

数据类型:char|细绳

切换用于命令行进度输出,指定为“上”或者'离开'.默认为“上”, 以便mapreduce.在地图期间在命令窗口中显示进度信息并减少执行阶段。

数据类型:char|细绳

输出参数

全部折叠

输出数据存储,作为a返回KeyValuedAtastore.或者tabulartextdatastore.对象。默认情况下,out是A.KeyValuedAtastore.指向的对象。垫文件在当前文件夹中。使用名称,值对论点“OutputType”'导出目录'返回一个tabulartextdatastore.对象或更改输出文件的位置。

mapreduce.不会对键值对进行排序out.当与其他产品一起使用时,他们的顺序可能会不同下载188bet金宝搏mapreduce.

查看内容out,可以使用预览,, 或者readall函数数据存储

提示

  • 调试你的mapreduce.算法检查键值对如何穿过不同的阶段始终有用。要检查数据的移动,请在地图中设置断点并减少函数。断点停止执行mapreduce.,允许您检查相关变量的当前状态,如KeyValueStore或者验证者.有关更多信息,请参阅调试MapReduce算法

  • 一些关于优化的建议mapreduce.在任何平台上的性能是:

    • 最小化对地图函数的调用次数。最简单的方法是增加值阅读输入数据存储的属性。结果是mapreduce.将较大的数据块传递给Map函数,并且数据存储耗尽较少的读取。

    • 减少map和reduce函数之间发送的中间数据量。一种方法是使用独特的在地图中结合类似密钥的映射功能。看使用mapReduce计算组的均值有关该技术的一个例子。

扩展能力

介绍在R2014B.