文档

mapreduce

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

描述

例子

outds= mapreduce (ds,mapfun,reducefun)应用映射函数mapfun输入数据存储ds,然后将与每个唯一键相关联的值传递给reduce函数reducefun。输出数据存储是一个KeyValueDatastore对象指向.mat文件在当前文件夹。

outds= mapreduce (ds,mapfun,reducefun,先生)(可选)指定运行时配置设置mapreduce。的先生输入是调用的结果mapreduce函数。通常,这个论点是用于并行计算工具箱™,MATLAB®并行服务器™,或MATLAB编译器™。有关更多信息,请参见使用其他产品加速和部署MapReduce下载188bet金宝搏

outds= mapreduce (___,名称,值)与一个或多个指定附加选项名称,值对参数使用任何以前的语法。例如,您可以指定“OutputFolder”紧随其后的是一个特征向量指定输出文件夹的路径。

例子

全部折叠

使用mapreduce数的航班数量由每一个独特的航空母舰在一个数据集。

创建一个数据存储使用airlinesmall.csv数据集。这个12-megabyte数据集包含29列几个航空公司的航班信息,包括到达和离开的时间。在本例中,选择UniqueCarrier(公司名称)感兴趣的变量。指定“TreatAsMissing”名称-值对数据存储处理“NA”值作为失踪,取代他们值。

ds = tabularTextDatastore (“airlinesmall.csv”,“TreatAsMissing”,“NA”);ds。SelectedVariableNames =“UniqueCarrier”;ds。SelectedFormats =“% C”;

预览数据。

预览(ds)
ans =8×1表UniqueCarrier _________________ PS PS PS PS PS PS PS PS

运行mapreduce上的数据。map和reduce函数计算每个航空公司名称的实例的数量在每个数据块,然后将这些中间项合并到最后一个计数。该方法利用中间唯一键执行的排序mapreduce。的函数countMappercountReducer都包含在这个脚本。

outds = mapreduce (ds, @countMapper @countReducer);
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MAPREDUCE进展* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *地图地图16%减少0% 32% 0%减少0%减少0%地图48%减少0% 65% 0% 81%减少0%地图地图地图100%减少0% 100% 97%减少0%减少10%地图100%减少21% 100%减少31%地图100%减少41% 100%减少52%地图地图100%减少72% 100% 100%减少62%减少83%地图100%减少93% 100%减少100%
readall (outds)
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]}⋮

map函数countMapper利用这一事实数据分类。的countcats类别函数是用于每个块的输入数据生成的键/值对航空公司的名字和相关的计算。

函数countMapper(数据、信息、intermKV)%计算在每一块独特的航空母舰的名字。一个= data.UniqueCarrier;c = num2cell (countcats (a));键=类别(a);addmulti (intermKV、钥匙、c)结束

reduce函数countReducer读取地图功能和产生的中间数据加在一起的数量产生一个最终计数为每个航空母舰。

函数countReducer (intermValIter,关键outKV)%将数块产生最终的数量。数= 0;hasnext (intermValIter)数据= getnext (intermValIter);数=数+数据;结束添加(outKV,钥匙,计数)结束

输入参数

全部折叠

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

mapreduce只能用确定性的数据存储。也就是说,如果你使用数据存储,重置数据存储重置,然后再读取数据存储,然后返回的数据必须在这两种情况下是相同的。mapreduce计算涉及到数据存储中,不确定性可以产生不可预测的结果。看到选择数据存储文件格式或应用程序为更多的信息。

函数句柄映射函数。mapfun接收输入数据存储块ds,然后使用添加addmulti功能键-值对添加到一个中间KeyValueStore对象。map函数调用的数量mapreduce等于的块的数量数据存储(块的数量决定的ReadSize属性数据存储)。

map函数的输入数据,信息,intermKVStore,这mapreduce自动创建并传递到地图功能:

  • 数据信息输入一个调用的结果的函数数据存储,这mapreduce在每次调用map函数自动执行。

  • intermKVStore是中间的名字吗KeyValueStore对象的映射函数需要添加键值对。如果没有调用map函数添加键值对intermKVStore,然后mapreduce不叫reduce函数和输出数据存储是空的。

模板映射函数的一个例子

函数关联(数据、信息、intermKVStore) %计算与数据块添加(intermKVStore、关键值)

例子:@myMapper

数据类型:function_handle

函数处理,以减少函数。mapreduce调用reducefun一旦为每个唯一键添加到中间KeyValueStoremap函数。在每一个电话,mapreduce通过与活动相关联的值的关键reducefun作为一个ValueIterator对象。的reducefun函数遍历每个键使用的值hasnextgetnext功能。执行一些计算(s)之后,它写的键-值对最终的输出。

reduce函数的输入intermKey,intermValIter,outKVStore,这mapreduce自动创建并通过减少功能:

  • intermKey从中间是活跃的关键吗KeyValueStore对象。每次调用reduce函数mapreduce指定一个新的唯一键键的中间KeyValueStore对象。

  • intermValIterValueIterator与活跃的关键,intermKey。这ValueIterator对象包含所有关键与活动相关联的值。滚动使用的值hasnextgetnext功能。

  • outKVStore最后的名称吗KeyValueStorereduce函数的对象需要添加键值对。mapreduce输出键-值对outKVStore并返回输出数据存储,outds,这是一个KeyValueDatastore默认对象。如果没有一个调用reduce函数添加最后一个键-值对outKVStore,然后输出数据存储是空的。

reduce函数的模板的一个例子

函数myReducer (intermKey intermValIter outKVStore),而hasnext (intermValIter) X = getnext (intermValIter);%计算当前值,X终端添加(outKVStore、关键值)

例子:@myReducer

数据类型:function_handle

执行环境,指定为一个mapreduce对象。先生是调用的结果吗mapreduce函数。默认的先生参数是调用gcmr使用默认的全球执行环境mapreduce(在MATLAB默认mapreduce (0),它返回一个SerialMapReducer对象)。

请注意

该设置指定的执行环境mapreduce并不是必需的mapreduce在您的本地计算机上。有关更多信息,请参见使用其他产品加速和部署MapReduce下载188bet金宝搏

名称-值对的观点

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

例子:outds = mapreduce (ds, @mapfun @reducefun,‘显示’,‘了’,‘OutputFolder’,“C: \ \用户名\用户桌面”)

类型的数据存储输出,指定为“二元”“TabularText”。默认设置的“二元”返回一个KeyValueDatastore输出数据存储指向二进制(.mat.seq)输出文件夹中的文件。的“TabularText”选择返回一个tabularTextDatastore输出数据存储指向. txt输出文件夹中的文件。

表提供细节为每个输出类型。

“OutputType” 类型的数据存储输出 数据存储指向的文件类型 Reduce函数可以添加的值 Reduce函数可以添加的键 细节
“二元”(默认) KeyValueDatastore .mat(或.seq运行时对Hadoop®)。 任何有效的MATLAB对象。 特征向量、字符串或数字标量不复杂的逻辑,或稀疏。 N /一个
“TabularText” TabularTextDatastore . txt 特征向量、字符串或数字标量不复杂的逻辑,或稀疏。 特征向量、字符串或数字标量不复杂的逻辑,或稀疏。
  • 文件是utf - 8编码。

  • 键和值选项卡(\ t)分离。

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

数据类型:字符|字符串

目标文件夹mapreduce指定输出文件路径。默认的输出文件夹是当前文件夹,松材线虫病。你可以指定一个不同的路径完全限定路径或路径相对于当前文件夹。

例子:mapreduce (…,“OutputFolder”,'MyOutputFolder\Results')指定文件路径相对于当前文件夹为输出。

数据类型:字符|字符串

切换命令行进步输出,指定为“上”“关闭”。默认值是“上”,所以mapreduce显示进度信息在命令窗口的map和reduce阶段执行。

数据类型:字符|字符串

输出参数

全部折叠

输出数据存储,作为一个返回KeyValueDatastoreTabularTextDatastore对象。默认情况下,outds是一个KeyValueDatastore对象指向.mat文件在当前文件夹。使用名称,值对理由“OutputType”“OutputFolder”返回一个tabularTextDatastore对象或改变输出文件的位置,分别。

mapreduce没有键值对的outds。与其他产品一起使用时,它们的顺序可能有所不同下载188bet金宝搏mapreduce

查看的内容outds,可以使用预览,,或readall的功能数据存储

提示

  • 调试mapreduce键值算法来研究如何通过不同阶段总是有用的。检查数据的运动,在你的map和reduce函数上设置断点。断点停止执行mapreduce,允许您检查相关变量的当前状态,像KeyValueStoreValueIterator。有关更多信息,请参见调试MapReduce算法

  • 一些建议来优化mapreduce性能在任何平台有:

    • 调用map函数的数量最小化。最简单的方法是增加的价值ReadSize输入数据存储的属性。其结果是,mapreduce通过更大的数据块的映射函数,用更少的读取和存储消耗。

    • 减少中间数据之间发送的map和reduce函数。一种方法是使用独特的在map函数结合类似的钥匙。看到使用MapReduce计算意思组对这种技术的一个例子。

介绍了R2014b