add
向 KeyValueStore 中添加单个键-值对组
说明
示例
向 KeyValueStore 中添加键-值对组
在 map 和 reduce 函数中使用 add
将数据传递给中间和最后的 KeyValueStore
。此示例使用 identity map 和 reduce 函数,直接将输入传递给输出。map 和 reduce 函数作为局部函数列在示例的末尾。
inds = tabularTextDatastore('airlinesmall.csv','SelectedVariableNames','ArrDelay','TreatAsMissing','NA'); preview(inds)
ans=8×1 table
ArrDelay
________
8
8
21
13
4
59
3
11
outds = mapreduce(inds,@myMapper,@myReducer,mapreducer(0));
******************************** * MAPREDUCE PROGRESS * ******************************** Map 0% Reduce 0% Map 16% Reduce 0% Map 32% Reduce 0% Map 48% Reduce 0% Map 65% Reduce 0% Map 81% Reduce 0% Map 97% Reduce 0% Map 100% Reduce 0% Map 100% Reduce 100%
readall(outds)
ans=1×2 table
Key Value
____________ _________________
{'ArrDelay'} {123523x1 double}
局部函数
function myMapper(data,info,intermKV) add(intermKV, 'ArrDelay',data.ArrDelay); end function myReducer(key,intermValIter,outKV) data = getnext(intermValIter); while hasnext(intermValIter) data = [data; getnext(intermValIter)]; end add(outKV,key,data); end
输入参数
KVStore
— 键-值对组存储对象
KeyValueStore
对象
键-值对组存储对象,指定为 KeyValueStore
对象。mapreduce
函数在执行期间自动创建 KeyValueStore
对象:
在 map 函数中,中间
KeyValueStore
对象的名称是 map 函数myMapper(data, info, intermKVStore)
的第三个输入参量。在 map 函数中使用同一变量名称通过add
或addmulti
添加中间键-值对组。在 reduce 函数中,最终
KeyValueStore
对象的名称是 reduce 函数myReducer(intermKey, intermValIter, outKVStore)
的第三个输入参量。在 reduce 函数中使用同一变量名称通过add
或addmulti
添加最终键-值对组。
有关详细信息,请参阅 KeyValueStore
。
key
— 键
数值标量 | 字符向量 | 字符串
键,指定为数值标量、字符向量或字符串。
由 map 函数添加的所有键必须具有同一类。由 reduce 函数添加的所有键必须具有同一类,但该类可能不同于由 map 函数添加的键的类。
数值键不能为 NaN
、复数、逻辑值或稀疏矩阵。
示例: add(intermKVStore,'Sum',sum(X))
向 map 函数中的中间 KeyValueStore
对象(名为 intermKVStore
)添加一个键-值对组。
示例: add(outKVStore,'Stats',[mean(X) max(X) min(X) var(X) std(X)])
向 reduce 函数中的最终 KeyValueStore
对象(名为 outKVStore
)添加一个键-值对组。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| string
value
— 值
任何 MATLAB® 对象
值,指定为任何 MATLAB 对象。这包括所有有效的 MATLAB 数据类型。
mapreduce
的 OutputType
参量会影响 reduce 函数可添加的值类型:
如果
OutputType
为'Binary'
(默认值),则由 reduce 函数添加的值可以是任何 MATLAB 对象。如果
OutputType
为'TabularText'
,则在使用add
函数时由 reduce 函数添加的值可以是数值标量、字符向量或字符串标量。另外,可以使用addmulti
函数添加多个带数值向量、字符向量元胞向量、数值标量元胞向量或字符串数组的值。在每种情况下,数值都不能是NaN
、复数、逻辑值或稀疏矩阵。
注意
在使用包含 mapreduce 的其他产品时,上述键-值对组要求可能不同。请参阅相应产品的文档以获得产品特定的键-值对组要求。
示例: add(intermKVStore,'Sum',sum(X))
指定一个要与键配对的标量值。
示例: add(outKVStore,'Stats',[mean(X) max(X) min(X) var(X) std(X)])
指定一个数值数组作为要与键配对的值。
提示
请勿在循环中使用
add
,因为这会对mapreduce
执行时间产生不利影响。改用元胞数组收集多个值(如果可以,使用向量化运算)并调用一次addmulti
。
版本历史记录
在 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)