主要内容

Mapreduce.

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

描述

例子

outds= mapreduce(DS.Mapfun.reyalfun.应用映射功能Mapfun.输入数据存储DS.,然后通过与每个唯一键关联的值传递以减少函数reyalfun.。输出数据存储是一个KeyValueDatastore指向的对象。垫文件在当前文件夹。

outds= mapreduce(DS.Mapfun.reyalfun.先生(可选)指定运行时配置设置Mapreduce.。这先生输入是对一个呼叫的结果mapreducer功能。通常情况下,这种说法被用于并行计算工具箱™,马铃薯®并行服务器™, 或者Matlab Compiler™。有关更多信息,请参阅使用其他产品加快并部署MapReduce下载188bet金宝搏

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

例子

全部收缩

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

使用该数据存储使用Airlinesmall.csv.数据集。此12兆字节数据集包含多个航空公司运营商的29列航班信息,包括抵达和出发时间。在此示例中,选择uniqueCarrier(航空公司名称)作为感兴趣的变量。指定'尾声'名称 - 值对,使得数据存储区对待'na'值缺失,并指定'MissingValue'名称 - 值对用零替换缺失值。

ds = tabulartextdataStore('airlinesmall.csv''尾声''na'......'MissingValue',0);ds.SelectedVariableNames ='unqueCarrier';ds.selectedFormats ='%C';

预览数据。

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

跑步Mapreduce.在数据上。地图和减少函数将每个数据块中的每个航空公司载体名称的实例数计算,然后将这些中间计数与最终计数组合。该方法通过执行唯一密钥来利用中间排序Mapreduce.。功能countmapper.countReducer包含在此脚本的末尾。

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%减少100%减少62%地图100%减少72%图100%减少83%图100%减少93%图100%减少100%
readall(odds)
ans =.29×2表键值__________ _________ {'aa'} {'作为'} {[2910] {'co'} {'dl'} {'ea'} {'dl'} {[{'ml(1)'} {'nw'} {'pa(1)'} {'pa(1)'} {'pa(1)'} {[318]} {{'pi'} {'ps'} {'ps'} {[83]} {'tw'} {'tw'} {[3805] {'ua'} {'ua'} {[13286] {'US'} {{'wn'} {[15931]} {'aq'} {[154]}⋮

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

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

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

功能康宾机(关键,intermvaliter,Outkv)%将来自所有块的计数组合以产生最终计数。count = 0;尽管hasnext(intermValIter)数据= GETNEXT(intermValIter);计数=计数+数据;结尾添加(outkv,键,计数)结尾

输入参数

全部收缩

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

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

映射函数的功能句柄。Mapfun.从输入数据存储接收块DS.,然后使用添加addmulti函数将密钥值对添加到中间keyvaluestore.目的。对地图功能的调用次数Mapreduce.等于块的数量数据存储(块的数量是由所确定的阅读数据存储的属性)。

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

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

  • Intermkvstore.是中级的名称keyvaluestore.对象,该映射函数需要增加键 - 值对。如果没有调用的地图功能添加键 - 值对的Intermkvstore., 然后Mapreduce.不调用Really函数,输出数据存储为空。

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

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

例子:@mymapper.

数据类型:function_handle.

功能手柄以减少函数。Mapreduce.呼叫reyalfun.一次加到中间体每个唯一密钥keyvaluestore.通过地图功能。在每次调用,Mapreduce.通过与活性键相关联的值reyalfun.作为一个ValueIterator目的。这reyalfun.使用每个键的值循环使用哈迪文字getNext.职能。然后,在执行一些计算之后,它将键值对写入最终输出。

降低功能的输入是intermkey.intermValIter, 和outkvstore., 哪一个Mapreduce.自动创建并传递给Reford功能:

  • intermkey.是来自中间的活动钥匙keyvaluestore.目的。通过每次调用函数减少Mapreduce.指定中间键的新唯一键keyvaluestore.目的。

  • intermValIter是个ValueIterator与活动密钥相关联,intermkey.。这ValueIterator对象包含与活动密钥关联的所有值。滚动使用值的值哈迪文字getNext.职能。

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

为模板的例子减少功能

函数myReducer(Intermkey,Intermvaliter,Outkvstore),而哈德文(Intermvalier)x = getNext(Intermvalirt);%使用当前值进行计算,x结束添加(Outkvstore,键,值)结束

例子:@Myreducer.

数据类型:function_handle.

执行环境,指定为mapreducer对象。先生是对一个调用的结果mapreducer功能。默认值先生论点是呼叫GCMR.,它使用默认的全局执行环境Mapreduce.(在matlab中默认为Mapreducer(0),它返回一个SerialMapreducer.目的)。

笔记

此设置指定执行环境Mapreduce.并且没有必要运行Mapreduce.在您当地的计算机上。有关更多信息,请参阅使用其他产品加快并部署MapReduce下载188bet金宝搏

名称值对参数

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

例子:Outds = MapReduce(DS,@Mapfun,@redudefun,'显示','关闭','outputfolder','c:\ users \ username \ desktop')

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

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

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

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

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

数据类型:char|细绳

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

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

数据类型:char|细绳

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

数据类型:char|细绳

输出参数

全部收缩

输出数据存储,作为a返回KeyValueDatastore或者tabulartextdatastore.目的。默认,outds是A.KeyValueDatastore指向的对象。垫文件在当前文件夹。使用名称,价值对论点'OutputType''导出目录'返回A.tabulartextdatastore.对象或更改输出文件的位置。

Mapreduce.不会对键值对进行排序outds。使用其他产品时,他们的订单可能会有所不同下载188bet金宝搏Mapreduce.

查看内容outds, 使用预习, 或者读物函数数据存储

尖端

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

  • 为了优化的一些建议Mapreduce.任何平台上的性能都是:

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

    • 减少地图之间发送的中间数据量并减少函数。一种方法是使用独特在地图中结合类似键的映射功能。看计算是指由集团使用的MapReduce这种技术的一个例子。

扩展功能

介绍了在R2014b