addmulti
キーと値の複数のペアを 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'} {123523×1 double}
{'DepDelay'} {123523×1 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
入力引数
キーと値のペアのストレージ オブジェクト。KeyValueStore
オブジェクトとして指定します。KeyValueStore
オブジェクトは、関数 mapreduce
の実行時に自動的に作成されます。
map 関数では、中間の
KeyValueStore
オブジェクトの名前をmyMapper(data, info, intermKVStore)
の 3 番目の入力引数として指定します。中間のキーと値のペアを追加するには、それと同じ変数名を map 関数のadd
またはaddmulti
で使用します。reduce 関数では、最終の
KeyValueStore
オブジェクトの名前をmyReducer(intermKey, intermValIter, outKVStore)
の 3 番目の入力引数として指定します。最終のキーと値のペアを追加するには、それと同じ変数名を reduce 関数のadd
またはaddmulti
で使用します。
詳細については、KeyValueStore
を参照してください。
キー。数値スカラー、数値ベクトル、文字ベクトル、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
値。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 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.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の 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)