добавление

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

Синтаксис

add(KVStore,key,value)

Описание

пример

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

Примеры

свернуть все

Используйте add в карте и уменьшите функции, чтобы передать данные в промежуточный и итоговый KeyValueStore. Этот простой пример использует единичную карту, и уменьшите функции, которые передают входные параметры, сквозные выводу.

inds = datastore('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 во время выполнения:

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

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

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

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

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

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

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

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

Типы данных: единственный | удваиваются | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | строка

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

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

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

  • Если OutputType является 'TabularText', то значение, добавленное уменьшать функцией, может быть числовым скаляром, вектором символа, или представить скаляр в виде строки при использовании функции add. Кроме того, можно использовать функцию addmulti, чтобы добавить несколько значений с числовым вектором, вектором ячейки векторов символов, вектором ячейки числовых скаляров или массивом строк. В каждом случае числовыми значениями не может быть NaN, комплексный, логический, или разреженный.

Примечание

Вышеупомянутые требования пары "ключ-значение" могут не согласиться при использовании других продуктов с mapreduce. См. документацию для соответствующего продукта, чтобы получить специфичные для продукта требования пары "ключ-значение".

Пример: добавьте (intermKVStore, 'Сумма', суммируйте (X)), задает единственное скалярное значение, чтобы соединиться с ключом.

Пример: добавьте (outKVStore, 'Статистика', [среднее значение (X) макс. (X) min (X) var (X) станд. (X)]) задает числовой массив как значение, чтобы соединиться с ключом.

Советы

  • Избегайте использования add в цикле, когда он может негативно влиять на время выполнения mapreduce. Вместо этого используйте массивы ячеек, чтобы собрать несколько значений (использующий векторизованные операции, если возможный), и используйте единственный вызов addmulti.

Введенный в R2014b

Была ли эта тема полезной?