addmulti
キーと値の複数のペアを KeyValueStore に追加
説明
例
KeyValueStore への複数のキー/値のペアの追加
map 関数および reduce 関数で add
および addmulti
を使用して、データを中間および最終の KeyValueStore
に渡します。この例では、入力を出力に直接渡す恒等 map 関数および reduce 関数を使用します。map 関数および reduce 関数は例の最後にローカル関数としてリストされます。
inds = tabularTextDatastore('airlinesmall.csv','SelectedVariableNames',... {'ArrDelay','DepDelay'},'TreatAsMissing','NA'); preview(inds)
ans=8×2 table
ArrDelay DepDelay
________ ________
8 12
8 1
21 20
13 12
4 -1
59 63
3 -2
11 -1
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 50% Map 100% Reduce 100%
readall(outds)
ans=2×2 table
Key Value
____________ _________________
{'ArrDelay'} {123523x1 double}
{'DepDelay'} {123523x1 double}
ローカル関数
function myMapper(data,info,intermKV) addmulti(intermKV,{'ArrDelay' 'DepDelay'},{data.ArrDelay data.DepDelay}); 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
オブジェクトとして指定します。KeyValueStore
オブジェクトは、関数 mapreduce
の実行時に自動的に作成されます。
map 関数では、中間の
KeyValueStore
オブジェクトの名前をmyMapper(data, info, intermKVStore)
の 3 番目の入力引数として指定します。中間のキーと値のペアを追加するには、それと同じ変数名を map 関数のadd
またはaddmulti
で使用します。reduce 関数では、最終の
KeyValueStore
オブジェクトの名前をmyReducer(intermKey, intermValIter, outKVStore)
の 3 番目の入力引数として指定します。最終のキーと値のペアを追加するには、それと同じ変数名を reduce 関数のadd
またはaddmulti
で使用します。
詳細については、KeyValueStore
を参照してください。
keys
— キー
数値スカラー | 数値ベクトル | 文字ベクトル | string 配列 | 文字ベクトルの cell ベクトル | 数値スカラーの cell ベクトル
キー。数値スカラー、数値ベクトル、文字ベクトル、string 配列、文字ベクトルの cell ベクトル、または数値スカラーの cell ベクトルとして指定します。キーが数値ベクトル、cell ベクトルまたは string 配列の場合は、各要素に異なるキーを指定します。
map 関数で追加するキーはすべて同じクラスでなければなりません。reduce 関数で追加するキーも同じクラスでなければなりませんが、map 関数で追加するキーとは別のクラスでもかまいません。
数値キーに NaN
、複素数、論理値、スパースは使用できません。
例: addmulti(intermKVStore,{'Sum'; 'Count'; 'Variance'},{sum(X); numel(X); var(X)})
は、cell ベクトルでキーを指定して、中間の KeyValueStore
オブジェクト intermKVStore
にキーと値のペアを 3 つ追加します。
例: addmulti(intermKVStore,[1 2 3 4],{sum(X); mean(X); max(X); min(X)})
は、数値ベクトルでキーを指定して、中間の KeyValueStore
オブジェクトにキーと値のペアを 4 つ追加します。
例: addmulti(outKVStore,'Stats',{[mean(X) max(X) min(X) var(X) std(X)]})
は、文字ベクトルをキーとして使用して、最終の KeyValueStore
オブジェクト outKVStore
にキーと値のペアを 1 つ追加します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| string
values
— 値
cell 配列
値。cell 配列として指定します。cell 配列の各エントリでキーと値のペアの値を指定するため、numel(values)
がキーの数と等しくなければなりません。cell 配列のエントリは、任意の MATLAB® オブジェクトにすることができます。これには、MATLAB のすべての有効なデータ型が含まれます。
reduce 関数で追加できる値のタイプは mapreduce
の OutputType
引数によって異なります。
OutputType
が'Binary'
(既定) の場合は、reduce 関数で任意の MATLAB オブジェクトを追加できます。OutputType
が'TabularText'
の場合、関数add
を使用すると reduce 関数により数値スカラー、文字ベクトルまたは string スカラーの値を追加できます。さらに、関数addmulti
を使用すると、数値ベクトル、文字ベクトルの cell ベクトル、数値スカラーの cell ベクトル、または string 配列を使用して複数の値を追加できます。いずれの場合も、数値をNaN
、複素数、論理値、スパースにすることはできません。
メモ
上記のキーと値のペアの要件は、mapreduce を使用する製品によって異なる場合があります。使用する製品のドキュメントで、キーと値のペアに関する製品固有の要件を確認してください。
例: addmulti(intermKVStore,{'Sum'; 'Count'; 'Variance'},{sum(X); numel(X); var(X)})
は、intermKVStore
という名前の中間の KeyValueStore
オブジェクトにキーと値のペアを 3 つ追加します。
例: addmulti(intermKVStore,[1 2 3 4],{sum(X); mean(X); max(X); min(X)})
は、cell ベクトルを使用して中間の KeyValueStore
オブジェクトにキーと値のペアを 4 つ追加します。
例: addmulti(outKVStore,'Stats',{[mean(X) max(X) min(X) var(X) std(X)]})
は、outKVStore
という名前の最終の KeyValueStore
オブジェクトにキーと値のペアを 1 つ追加します。
例: addmulti(outKVStore,{'Distance' 'Time'},{table.Distance table.Time})
は、table の変数で値を指定して、キーと値のペアを 2 つ追加します。
ヒント
mapreduce
の実行時間が長くなることがあるため、ループ内ではadd
を使用しないことをお勧めします。代わりに、cell 配列を使用して複数の値をまとめ (可能な場合はベクトル化演算を使用)、単一の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)