add

Добавьте одну пару "ключ-значение" в KeyValueStore

Синтаксис

Описание

пример

add(KVStore,key,value) добавляет одну пару "ключ-значение" к KVStore, который является KeyValueStore созданный во время mapreduce выполнение. Использовать add в карте или уменьшить функцию, написанную для использования с mapreduce для хранения информации о промежуточной или конечной паре "ключ-значение".

Примеры

свернуть все

Использование add в отображении и уменьшении функций для передачи данных в промежуточный и конечный KeyValueStore. Этот пример использует единичную карту и функции сокращения, которые передают входы прямо к выходу. Функции 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 объект. mapreduce функция автоматически создает KeyValueStore объект во время выполнения:

  • В функции map имя промежуточного KeyValueStore объект является третьим входным параметром в функции map, myMapper(data, info, intermKVStore). Используйте это же имя переменной, чтобы добавить промежуточные пары "ключ-значение" с add или addmulti в функции map.

  • В функции reduce имя конечного KeyValueStore объект является третьим входным параметром в функции сокращения, myReducer(intermKey, intermValIter, outKVStore). Используйте это же имя переменной, чтобы добавить последние пары "ключ-значение" с add или addmulti в функции редукции.

Для получения дополнительной информации смотрите KeyValueStore.

Ключ, заданный как числовой скаляр, вектор символов или строка.

Все ключи, добавленные функцией map, должны иметь один и тот же класс. Ключи, добавленные функцией reduce, также должны иметь тот же класс, но этот класс может отличаться от класса ключей, добавленных функцией map.

Числовые ключи не могут быть NaN, сложный, логический или разреженный.

Пример: add(intermKVStore,'Sum',sum(X)) добавляет пару "ключ-значение" к промежуточному KeyValueStore объект (с именем intermKVStore) в функции map.

Пример: add(outKVStore,'Stats',[mean(X) max(X) min(X) var(X) std(X)]) добавляет пару "ключ-значение" к конечной KeyValueStore объект (с именем outKVStore) в функции редукции.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

Значение, заданное как любой объект MATLAB. Сюда входят все допустимые типы данных MATLAB.

The OutputType аргумент mapreduce влияет на тип значений, которые может добавить функция reduce:

  • Если на OutputType является 'Binary' (по умолчанию), тогда значение, добавленное функцией reduce, может быть любым объектом MATLAB.

  • Если на OutputType является 'TabularText', тогда значение, добавленное редукционной функцией, может быть числовым скаляром, вектором символов или строковым скаляром при использовании add функция. Кроме того, вы можете использовать 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