写一个Reduce函数

的作用,减少功能的MapReduce的

MapReduce的既需要输入地图功能,其接收数据块,并且输出中间结果,以及输入减少函数,其读取中间结果,并且产生最终结果。因此,这是正常的拆散的计算分成两个相关组件的地图和减少功能分别履行。例如,为了找到在数据集中的最大值,地图功能可以在输入数据的每个块的最大值,然后减少功能可以找到在所有的中间最大值的单个最大值。

本图显示了减少的阶段MapReduce的算法。

的减少阶段MapReduce的算法步骤如下:

  1. 的映射阶段的结果MapReduce的算法是中间环节KeyValueStore对象,其中包含由map函数添加的所有键-值对。在调用reduce函数之前,MapReduce的组中间值KeyValueStore通过独特的密钥对象。在中间的每个唯一关键KeyValueStore对象将导致对reduce函数的单个调用。

  2. 对每个键,MapReduce的创建一个ValueIterator对象包含所有与该键关联的值。

  3. 属性中的值的reduce函数滚动ValueIterator对象使用hasnextgetnext函数,通常在a中使用循环。

  4. 在执行汇总计算之后,reduce函数将一个或多个键值对添加到final中KeyValueStore对象使用添加addmulti功能。

的减少阶段MapReduce的当reduce函数处理所有唯一的中间键及其相关值时,算法完成。这一阶段的结果MapReduce的算法(类似于地图相)是KeyValueStore对象,其中包含reduce函数添加的所有最终键值对。在减少阶段之后,MapReduce的拉动从键值对KeyValueStore并在数据存储中返回它们KeyValueDatastore默认对象)。在输出中的键值对数据存储不按排序顺序;它们出现在相同的顺序,他们被减少的功能添加。

Reduce功能要求

MapReduce的为中间的每个唯一键自动调用reduce函数KeyValueStore对象,因此reduce函数必须满足某些基本要求,才能在这些自动调用期间正常运行。这些需求共同确保数据在MapReduce的算法。

到减少函数的输入是intermKey,intermValIteroutKVStore:

  • intermKey是映射函数添加的唯一键之一。每个对reduce函数的调用通过MapReduce的从中间的键中指定一个新的唯一键KeyValueStore对象。

  • intermValIter是个ValueIterator与活动键关联的对象,intermKey。这个ValueIterator对象包含与活动键关联的所有值。方法滚动这些值hasnextgetnext功能。

  • outKVStore是最终的名称KeyValueStore对象到的减少功能的需求增加键 - 值对。该添加addmulti函数使用此对象名称向输出添加键-值对。MapReduce的取从输出键值对outKVStore并返回它们在输出数据存储区,这是一个KeyValueDatastore默认对象。如果reduce函数没有添加任何键-值对outKVStore,然后MapReduce的返回一个空的数据存储。

除了reduce函数的这些基本要求之外,reduce函数添加的键值对还必须满足以下条件:

  1. 键必须是数字标量、字符向量或字符串。数字键不能逻辑的、复杂的或稀疏的。

  2. 通过减少功能添加的所有键必须具有相同的类,但这个类可以从类的地图功能增加了按键的不同。

  3. 如果输出类型的说法MapReduce的“二元”(默认值),然后通过降低功能添加了一个值可以是任何MATLAB®对象,包括所有有效的MATLAB数据类型。

  4. 如果输出类型的说法MapReduce的'TabularText',然后通过降低功能添加的值可以是一个数字标量,矢量字符或字符串。在这种情况下,该值不能复杂的、逻辑的或稀疏的。

请注意

使用的其他产品有当上述的键 - 值对要求可能不同s manbetx 845MapReduce的。请参阅文件,将正确的产品来获得特定产品的键值对的要求。

减少样本函数

这里有几个说明性减少使用的功能MapReduce的例子。

简单的减少函数

一个减速的最简单的例子是maxArrivalDelayReducer,即本例中的减速机使用MapReduce查找最大值。本例中的map函数查找每个输入数据块中的最大到达延迟。然后reduce函数通过在所有中间最大值中找到一个最大值来完成任务。属性中的值通过滚动程序查找最大值ValueIterator对象和每一个值进行比较,当前最大。MapReduce的只要求这种减速功能的一次,因为映射器将单个唯一键的中间KeyValueStore对象。reduce函数将单个键-值对添加到输出。

功能maxArrivalDelayReducer (intermKey intermValIter outKVStore)%intermKey是 'PartialMaxArrivalDelay'。intermValIter是一个迭代%具有关键“PartialMaxArrivalDelay”的所有值。maxVal =无穷;max(getnext(intermValIter), maxVal);结束%添加到outKVStore的键值对将成为mapreduce的输出添加(outKVStore“MaxArrivalDelay”,maxVal);结束

高级功能降低

减速器的一个更高级的实施例是statsByGroupReducer,即本例中的减速机计算汇总统计数据由集团使用的MapReduce。在这个例子中组的映射函数,然后使用一个额外的参数(航空公司载体,月,等等)中的每个输入的数据,并计算各组数据的若干统计量。精简函数通过检索统计量,并将它们串联成长向量,然后使用向量来计算最终的统计量进行计数,均值,方差,偏度和峰度完成的任务。减速机存储这些值在结构领域,使每一个独特的密钥具有统计量的输出的结构。

功能statsByGroupReducer(intermKey,intermValIter,outKVStore)%减速功能的StatisticsByGroupMapReduceExample。%版权所有2014年MathWorks公司N = [];米= [];V = [];S = [];K = [];%获取所有中间统计信息集getnext(intermValIter);n = [n;值(1)];m = [m;值(2)];v = [v;值(3)];s =[年代;值(4)];k = [k; value(5)];结束%注意,这种方法假定串联的中间值拟合%在内存中。的减速器函数,即协变减径器%CovarianceMapReduceExample一种替代成对还原方法合并中间结果数= (n)之和;meanVal = (n。*米)/数总和;d = m - meanVal;方差= (sum(n.*v) + sum(n.*d.²))/计数;skewnessVal = (n.*s)和(n.*d)* (3 * v + d。^ 2)))。/方差(计数* ^ (1.5));(n.*k) + (n.*d)* (4 * s + 6。* v。* d + d。^ 3))) /(方差数* ^ 2);有价值=结构(“数”数,'意思',meanVal,“方差”方差,“偏态”,skewnessVal,“峰度”,kurtosisVal);将结果添加到输出数据存储中添加(outKVStore intermKey、有价值);

更多的减少功能

有关常见的编程模式在地图以上信息减少功能,请参阅建立有效的算法与MapReduce的

另请参阅

|||||

相关话题