KeyValueStore
存储用于 mapreduce 的键-值对组
说明
mapreduce
函数在执行期间自动创建 KeyValueStore
对象,并将其用于存储由 map 和 reduce 函数添加的键-值对组。尽管您绝不需要显式创建 KeyValueStore
对象以使用 mapreduce
,但您需要使用 add
和 addmulti
对象函数在 map 和 reduce 函数中与此对象交互。
创建对象
mapreduce
函数在执行期间自动创建 KeyValueStore
对象。
示例
将键-值对组添加到 map 函数中的 KeyValueStore
下面的 map 函数使用 add
函数将键-值对组添加到中间的 KeyValueStore
对象(名称为 intermKVStore
),一次添加一个。
function MeanDistMapFun(data, info, intermKVStore) distances = data.Distance(~isnan(data.Distance)); sumLenKey = 'sumAndLength'; sumLenValue = [sum(distances), length(distances)]; add(intermKVStore, sumLenKey, sumLenValue); end
将多个键-值对组添加到 map 函数中的 KeyValueStore
下面的 map 函数使用 addmulti
将多个键-值对组添加到中间的 KeyValueStore
对象(名称为 intermKVStore
)。请注意,这个 map 函数收集 intermKeys
变量中的多个键以及 intermVals
变量中的多个值。这样调用 addmulti
一次后便可添加所有的键-值对组。最好采用调用 addmulti
一次的方式,而不是在循环中使用 add
。
function meanArrivalDelayByDayMapper(data, ~, intermKVStore) % Mapper function for the MeanByGroupMapReduceExample. % Copyright 2014 The MathWorks, Inc. % Data is an n-by-2 table: first column is the DayOfWeek and the second % is the ArrDelay. Remove missing values first. delays = data.ArrDelay; day = data.DayOfWeek; notNaN =~isnan(delays); day = day(notNaN); delays = delays(notNaN); % find the unique days in this chunk [intermKeys,~,idx] = unique(day, 'stable'); % group delays by idx and apply @grpstatsfun function to each group intermVals = accumarray(idx,delays,size(intermKeys),@countsum); addmulti(intermKVStore,intermKeys,intermVals); function out = countsum(x) n = length(x); % count s = sum(x); % mean out = {[n, s]};
扩展功能
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
版本历史记录
在 R2014b 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)