此示例显示如何使用查找数据集中单个变量的最大值地图还原
. 它演示了地图还原
因为只有一个键和最小的计算量。
创建数据存储airlinesmall.csv
数据集。这个12mb的数据集包含几家航空公司的29列航班信息,包括到达和起飞时间。在本例中,选择ArrDelay
(航班到达延迟)作为感兴趣的变量。
ds=表格数据存储(“airlinesmall.csv”,“治疗减少”,“不”); ds.SelectedVariableNames=“延迟”;
数据存储处理“不”
值为缺少,并将缺少的值替换为楠
默认值。此外选择变量名称
属性仅允许您使用选定的感兴趣变量,您可以使用预览
.
预览(ds)
ans=8×1表ArrDelay(8 21 13 4 59 3 11)
这个地图还原
函数需要一个映射函数和一个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);终止%--------------------------------------------------------------------