主要内容

MapReduce

用于分析不适合记忆的数据集的编程技术

描述

例子

淘汰= mapReduce(DS,,,,MAPFUN,,,,降低应用地图功能MAPFUN输入数据存储DS,然后传递与每个唯一键关联的值以降低功能降低。输出数据存储是一个KeyValueDatastore指向的对象。垫当前文件夹中的文件。

淘汰= mapReduce(DS,,,,MAPFUN,,,,降低,,,,先生可选地指定运行时配置设置MapReduce。这先生输入是呼叫的结果MAPREDUCER功能。通常,此参数与并行计算工具箱™一起使用,MATLAB®Parallel Server™, 或者MATLAB编译器™。有关更多信息,请参阅使用其他产品加快并部署MapReduces manbetx 845

淘汰= mapReduce(___,,,,名称,价值用一个或多个指定其他选项名称,价值使用任何先前的语法对配对参数。例如,您可以指定'导出目录'然后是一个字符向量,指定输出文件夹的路径。

例子

全部收缩

利用MapReduce计算数据集中每个独特航空公司制造的航班数量。

使用AirlinesMall.CSV数据集。这个12兆字节的数据集包含29列飞行信息,用于几个航空公司,包括到达和出发时间。在此示例中,选择独算带(航空公司名称)作为感兴趣的变量。指定“治疗”名称值对,以便数据存储对待'na'值为丢失的值,并指定“失踪价值”名称值对将缺失值替换为零。

ds = tabulartextdatastore('airlinesmall.csv',,,,“治疗”,,,,'na',,,,...“失踪价值”,0);ds.selectedVariablenames =“唯一载体”;ds.selectedformats ='%C';

预览数据。

预览(DS)
ans =8×1桌UniquerCarrier _____________ PS PS PS PS PS PS PS PS PS PS PS PS PS PS PS PS

MapReduce在数据上。地图和减少功能计算每个数据块中每个航空公司名称的实例数量,然后将这些中间计数组合为最终计数。此方法利用由唯一键执行的中间分类MapReduce。功能CountMapper乡村包含在此脚本的末尾。

utds = mapReduce(ds,@countmapper,@countreducer);
*********************************************************************************************************************************地图0%减少0%地图16%减少0%地图32%降低0%地图48%减少0%地图65%减少0%地图81%减少0%MAP 97%减少0%MAP 100%减少0%MAP 100%减少10%MAP 100%减少21%MAP 100%减少31%MAP 100%减少41%MAP 100%减少52%MAP 100%减少62%地图100%减少72%地图100%减少83%地图100%减少93%地图100%减少100%
readall(Outds)
ans =29×2桌钥匙值__________ _________ {'aa'} {[14930]} {'as'} {[2910]} {'co'} {[8138]} {'dl'} {'dl'} {[16578]}[920]} {'hp'} {[3660]} {'ml(1)'} {[69]} {'nw'} {[10349]} {[10349]} {'pa(1)'}'} {[318]}{'pi'} {[871]} {'ps'} {[83]} {'tw'} {[3805]} {'ua'} {[13286]}{'wn'} {[15931]} {'aq'} {[154]}⋮

地图功能CountMapper利用数据是分类的事实。这countcats类别在输入数据的每个块上使用功能来生成航空公司名称和相关计数的密钥/值对。

功能CountMapper(数据,信息,InterMKV)%在每个块中计算独特的航空公司名称。a = data.uniquecarrier;c = num2cell(countcats(a));键=类别(a);addmulti(Intermkv,键,C)结尾

减少功能乡村在MAP函数产生的中间数据中读取,并将所有计数添加在一起,为每个航空公司载体产生一个最终计数。

功能乡村(Key,Intermvaliter,Outkv)%结合了来自所有块的计数以产生最终计数。计数= 0;尽管hasnext(InterMvaliter)data = getNext(InterMvaliter);count = count + data;结尾添加(outkv,key,count)结尾

输入参数

全部收缩

输入数据存储,指定为数据存储对象。使用数据存储功能以从数据集创建数据存储对象。

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

函数手柄以映射功能。MAPFUN从输入数据存储接收块DS,然后使用添加addmulti函数以将键值对添加到中间体KeyValuestore目的。通过MapReduce等于数据存储(块的数量由读取尺寸数据存储的属性)。

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

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

  • Intermkvstore是中间人的名称KeyValuestore地图函数需要添加键值对的对象。如果没有对地图函数的调用添加键值对Intermkvstore, 然后MapReduce不调用RELAD功能,并且输出数据存储为空。

地图功能的模板的一个示例是

函数myMapper(数据,信息,InterMKVStore)%使用数据块add(Intermkvstore,key,value)结束计算

例子:@mymapper

数据类型:function_handle

功能处理以降低功能。MapReduce呼叫降低一次添加到中间的每个唯一键KeyValuestore通过地图功能。在每个电话中,MapReduce将与活动键关联的值传递到降低作为一个ValueIterator目的。这降低功能循环通过每个键的值使用hasnextgetNext功能。然后,执行一些计算后,它将键值对写入最终输出。

减少功能的输入是Intermkey,,,,间值, 和OUTKVSTORE, 哪个MapReduce自动创建并传递到减少功能:

  • Intermkey是中级的活动键KeyValuestore目的。每个呼吁通过MapReduce指定中间键的新唯一键KeyValuestore目的。

  • 间值是个ValueIterator与活动键关联,Intermkey。这个ValueIterator对象包含与活动键关联的所有值。使用hasnextgetNext功能。

  • OUTKVSTORE是决赛的名字KeyValuestore降低功能需要添加键值对的对象。MapReduce从中取出输出键值对OUTKVSTORE并在输出数据存储中返回它们,淘汰,这是一个KeyValueDatastore默认情况下对象。如果没有任何调用降低功能的调用,则将最终键值对添加到OUTKVSTORE,然后输出数据存储为空。

减少功能模板的一个示例是

函数myReducer(Intermkey,Intermvaliter,OutkvStore),而HasNext(InterMvaliter)x = getNext(InterMvaliter);%执行当前值,x end add(Outkvstore,键,值)结束的计算

例子:@myreducer

数据类型:function_handle

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

笔记

此设置指定了执行环境MapReduce并且不需要运行MapReduce在您的本地计算机上。有关更多信息,请参阅使用其他产品加快并部署MapReduces manbetx 845

名称值参数

将可选的参数对name1 = value1,...,namen = valuen, 在哪里姓名是参数名称和价值是相应的值。名称值参数必须在其他参数之后出现,但是对的顺序并不重要。

在R2021a之前,请使用逗号分隔每个名称和值,并附上姓名用引号。

例子:utds = mapreduce(ds,@mapfun, @reducefun,'display'','off','outputfolder','c:\ users \ username \ username \ desktop')

数据存储输出的类型,指定为“二进制”或者“ Tabulartext”。默认设置的设置“二进制”返回aKeyValueDatastore指向二进制的输出数据存储(。垫或者.seq)输出文件夹中的文件。这“ Tabulartext”选项返回aTabulartextdatastore输出数据存储指向。文本输出文件夹中的文件。

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

'outputType' 数据存储输出的类型 数据存储指向类型文件 减少功能可以添加的值 减少功能可以添加的密钥 细节
“二进制”(默认) KeyValueDatastore 。垫(或者.seq当对阵Hadoop时®)。 任何有效的MATLAB对象。 非字符矢量,字符串或数字标量,复杂,逻辑或稀疏。 N/A。
“ Tabulartext” Tabulartextdatastore 。文本 非字符矢量,字符串或数字标量,复杂,逻辑或稀疏。 非字符矢量,字符串或数字标量,复杂,逻辑或稀疏。
  • 文件已编码UTF-8。

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

  • 行定界符是\ r \ n在窗户上®, 和\ n在Linux上®苹果电脑

数据类型:char|细绳

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

例子:mapReduce(...,'output -folder',“ myoutputfolder \ results')为输出指定相对于当前文件夹的文件路径。

数据类型:char|细绳

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

数据类型:char|细绳

输出参数

全部收缩

输出数据存储,返回为KeyValueDatastore或者Tabulartextdatastore目的。默认,淘汰是一个KeyValueDatastore指向的对象。垫当前文件夹中的文件。使用名称,价值配对的争论'outputType''导出目录'返回Tabulartextdatastore对象或分别更改输出文件的位置。

MapReduce不分整理键值对淘汰。当使用其他产品与s manbetx 845MapReduce

查看内容淘汰, 使用预习,,,,, 或者读取功能数据存储

提示

  • 调试您MapReduce检查键值对如何在不同阶段移动的算法总是有用的。要检查数据的运动,请在地图中设置断点并减少功能。断点停止执行MapReduce,允许您检查相关变量的当前状态,例如KeyValuestore或者ValueIterator。有关更多信息,请参阅DEBUG MAPREDUCE算法

  • 一些优化的建议MapReduce在任何平台上的性能是:

    • 最小化对地图功能的调用数量。最简单的方法是增加读取尺寸输入数据存储的属性。结果是MapReduce将较大的数据块传递到地图函数,而数据存储耗尽的读数较少。

    • 减少在地图和减少功能之间发送的中间数据的量。一种方法是使用独特的在地图功能中以组合相似的键。看使用MapReduce按组计算平均值作为此技术的示例。

扩展功能

版本历史记录

在R2014b中引入