Main Content

add

キーと値の 1 つのペアを KeyValueStore に追加

説明

add(KVStore,key,value) は、キーと値の 1 つのペアを KVStore (mapreduce の実行時に作成される KeyValueStore) に追加します。add は、中間または最終のキーと値のペアの情報を格納するために、mapreduce で使用する map 関数または reduce 関数で使用します。

すべて折りたたむ

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

入力引数

すべて折りたたむ

キーと値のペアのストレージ オブジェクト。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 として指定します。

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 のすべての有効なデータ型が含まれます。

reduce 関数で追加できる値のタイプは mapreduceOutputType 引数によって異なります。

  • 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 で導入