主要内容

使用MapReduce查找最大值

此示例显示如何使用查找数据集中单个变量的最大值地图还原. 它演示了地图还原因为只有一个键和最小的计算量。

准备数据

创建数据存储airlinesmall.csv数据集。这个12mb的数据集包含几家航空公司的29列航班信息,包括到达和起飞时间。在本例中,选择ArrDelay(航班到达延迟)作为感兴趣的变量。

ds=表格数据存储(“airlinesmall.csv”,“治疗减少”,“不”); ds.SelectedVariableNames=“延迟”;

数据存储处理“不”值为缺少,并将缺少的值替换为默认值。此外选择变量名称属性仅允许您使用选定的感兴趣变量,您可以使用预览.

预览(ds)
ans=8×1表ArrDelay(8 21 13 4 59 3 11)

运行MapReduce

这个地图还原函数需要一个映射函数和一个reduce函数作为输入。映射器接收数据块并输出中间结果。reducer读取中间结果并生成最终结果。

在这个例子中,映射器在每个数据块中查找最大到达延迟。然后映射器将这些最大值存储为与键相关联的中间值“PartialMarrivalDelay”.

显示地图功能文件。

作用maxArrivalDelayMapper(数据、信息、intermKVStore)partMax=max(数据.ArrDelay);添加(中间存储,“PartialMarrivalDelay”,partMax);终止

减速器接收每个块的最大到达延迟列表,并从值列表中查找总的最大到达延迟。地图还原由于映射程序只添加一个唯一的键,因此只调用此reducer一次添加将最后一个键值对添加到输出。

显示reduce函数文件。

作用maxArrivalDelayReducer(intermKey、intermValIter、outKVStore)%中间键是“PartialMaxarivalDelay”。Intervaliter是的迭代器%具有键“PartialMaxArrivalDelay”的所有值。maxVal=-Inf;虽然hasnext(intervaliter)maxVal=max(getnext(intervaliter),maxVal);终止%添加到outKVStore的键值对将成为mapreduce的输出添加(outKVStore,“MaxArrivalDelay”,maxVal);终止

使用地图还原要将map和reduce函数应用到数据存储,ds.

maxDelay=mapreduce(ds、@maxArrivalDelayMapper、@maxArrivalDelayReducer);
*********************************地图缩减进度*********************地图0%缩减0%地图16%缩减0%地图32%缩减0%地图48%缩减0%地图65%缩减0%地图81%缩减0%地图97%缩减0%地图100%缩减0%地图100%缩减100%

地图还原返回一个数据存储,最大延迟,文件位于当前文件夹中。

从输出数据存储中读取最终结果,最大延迟.

readall(最大延迟)
ans=1×2表键值{'MaxArrivalDelay'}{[1014]}

局部函数

这里列出的是映射和减少函数地图还原适用于数据。

作用maxArrivalDelayMapper(数据、信息、intermKVStore)partMax=max(数据.ArrDelay);添加(中间存储,“PartialMarrivalDelay”,partMax);终止%--------------------------------------------------------------------作用maxArrivalDelayReducer(intermKey、intermValIter、outKVStore)%中间键是“PartialMaxarivalDelay”。Intervaliter是的迭代器%具有键“PartialMaxArrivalDelay”的所有值。maxVal=-Inf;虽然hasnext(intervaliter)maxVal=max(getnext(intervaliter),maxVal);终止%添加到outKVStore的键值对将成为mapreduce的输出添加(outKVStore,“MaxArrivalDelay”,maxVal);终止%--------------------------------------------------------------------

另见

|

相关的话题