add
向 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'} {123523×1 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
输入参数
键-值对组存储对象,指定为 KeyValueStore 对象。mapreduce 函数在执行期间自动创建 KeyValueStore 对象:
在 map 函数中,中间
KeyValueStore对象的名称是 map 函数myMapper(data, info, intermKVStore)的第三个输入参量。在 map 函数中使用同一变量名称通过add或addmulti添加中间键-值对组。在 reduce 函数中,最终
KeyValueStore对象的名称是 reduce 函数myReducer(intermKey, intermValIter, outKVStore)的第三个输入参量。在 reduce 函数中使用同一变量名称通过add或addmulti添加最终键-值对组。
有关详细信息,请参阅 KeyValueStore。
键,指定为数值标量、字符向量或字符串。
由 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
值,指定为任何 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 Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)