add
キーと値の 1 つのペアを KeyValueStore に追加
説明
例
KeyValueStore へのキー/値のペアの追加
map 関数および reduce 関数で add
を使用して、データを中間および最終の KeyValueStore
に渡します。この例では、入力を出力に直接渡す恒等 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
オブジェクトとして指定します。KeyValueStore
オブジェクトは、関数 mapreduce
の実行時に自動的に作成されます。
map 関数では、中間の
KeyValueStore
オブジェクトの名前をmyMapper(data, info, intermKVStore)
の 3 番目の入力引数として指定します。中間のキーと値のペアを追加するには、それと同じ変数名を map 関数のadd
またはaddmulti
で使用します。reduce 関数では、最終の
KeyValueStore
オブジェクトの名前をmyReducer(intermKey, intermValIter, outKVStore)
の 3 番目の入力引数として指定します。最終のキーと値のペアを追加するには、それと同じ変数名を reduce 関数のadd
またはaddmulti
で使用します。
詳細については、KeyValueStore
を参照してください。
key
— キー
数値スカラー | 文字ベクトル | string
キー。数値スカラー、文字ベクトルまたは string として指定します。
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 のすべての有効なデータ型が含まれます。
reduce 関数で追加できる値のタイプは mapreduce
の OutputType
引数によって異なります。
OutputType
が'Binary'
(既定) の場合は、reduce 関数で任意の MATLAB オブジェクトを追加できます。OutputType
が'TabularText'
の場合、関数add
を使用すると reduce 関数により数値スカラー、文字ベクトルまたは string スカラーの値を追加できます。さらに、関数addmulti
を使用すると、数値ベクトル、文字ベクトルの cell ベクトル、数値スカラーの cell ベクトル、または string 配列を使用して複数の値を追加できます。いずれの場合も、数値をNaN
、複素数、論理値、スパースにすることはできません。
メモ
上記のキーと値のペアの要件は、mapreduce を使用する製品によって異なる場合があります。使用する製品のドキュメントで、キーと値のペアに関する製品固有の要件を確認してください。
例: add(intermKVStore,'Sum',sum(X))
は、キーのペアの値として単一のスカラー値を指定します。
例: add(outKVStore,'Stats',[mean(X) max(X) min(X) var(X) std(X)])
は、キーのペアの値として数値配列を指定します。
ヒント
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)