通过MapReduce查找最大值
Posted 数据分析绘图
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过MapReduce查找最大值相关的知识,希望对你有一定的参考价值。
通过MapReduce查找最大值
本示例显示如何使用mapreduce查找数据集中单个变量的最大值。它演示了mapreduce最简单的用法,因为只有一个键和最少的计算。
内容
准备数据
运行MapReduce
准备数据
使用airlinesmall.csv数据集创建数据存储。这个12兆字节的数据集包含了几个航空公司的29个航班信息栏,包括到达和离开时间。在这个例子中,选择ArrDelay(航班到达延迟)作为感兴趣的变量。
ds = tabularTextDatastore('airlinesmall.csv','TreatAsMissing','NA');ds.SelectedVariableNames = 'ArrDelay' ;
数据存储区将“NA”值视为缺失,并默认使用NaN值替换缺失的值。此外,SelectedVariableNames属性允许您仅使用所选的感兴趣变量,您可以使用预览进行验证。
preview(ds)
ans = 8x1 table ArrDelay ________ 8 8 21 13 4 59 3 11
运行MapReduce
该映射精简功能需要的映射函数和减小函数作为输入。该映射程序接收大量数据并输出中间结果。减速器读取中间结果并产生最终结果。
在这个例子中,映射器在每个数据块中找到最大到达延迟。然后映射器将这些最大值存储为与“PartialMaxArrivalDelay”键相关联的中间值。
显示地图功能文件。
函数 maxArrivalDelayMapper(data,info,intermKVStore) 用于MaxMapreduceExample的%Mapper函数。%版权所有1984-2014 The MathWorks,Inc. %Data是ArrDelay的一个n-1表格。由于数据源是表格,读取的返回值是一个表格对象。partMax = max(data.ArrDelay);add(intermKVStore,'PartialMaxArrivalDelay',partMax);
Reducer接收每个组块的最大到达延迟列表,并从值列表中找到总体最大到达延迟。mapreduce只调用一次这个reducer,因为mapper只添加一个唯一的键。Reducer使用add来将最终的键值对添加到输出中。
显示缩小功能文件。
函数 maxArrivalDelayReducer(intermKey,intermValIter,outKVStore) 用于MaxMapreduceExample的%Reducer函数。%版权所有2014 The MathWorks,Inc.%intermKey是'PartialMaxArrivalDelay'。intermValIter是具有键'PartialMaxArrivalDelay'的所有值的迭代器。maxVal = -inf;而 hasnext(intermValIter) maxVal = max(getnext(intermValIter),maxVal);end %添加到outKVStore的键值对将成为mapreduce add 的输出(outKVStore,'MaxArrivalDelay',maxVal);
使用mapreduce将映射和减少函数应用于数据存储区ds。
maxDelay = mapreduce(ds,@maxArrivalDelayMapper,@maxArrivalDelayReducer);
********************************* MAPREDUCE进展*********************************地图0%减少0%地图16%减少0%地图32%减少0%地图48%减少0%地图65%减少0%地图81%减少0%地图97%减少0%地图100%减少0%地图100%减少100%
mapreduce返回一个数据存储,maxDelay,包含当前文件夹中的文件。
从输出数据存储区maxDelay读取最终结果。
readall(MAXDELAY)
ans =
1x2 table Key Value _________________ ______ 'MaxArrivalDelay' [1014]
以上是关于通过MapReduce查找最大值的主要内容,如果未能解决你的问题,请参考以下文章