addmulti

Добавление Нескольких Пар ключ/значение к KeyValueStore

Описание

пример

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

Примеры

свернуть все

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

inds = datastore('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'}    {123523x1 double}
    {'DepDelay'}    {123523x1 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 объект. mapreduce функция автоматически создает KeyValueStore объект во время выполнения:

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

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

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

Ключи, заданные в виде числа, числового вектора, вектора символов, массива строк, вектора ячейки векторов символов или вектора ячейки числовых скаляров. Если ключи являются числовым вектором, вектором ячейки или массивом строк, то каждая запись задает различный ключ.

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

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

Пример: addmulti(intermKVStore,{'Sum'; 'Count'; 'Variance'},{sum(X); numel(X); var(X)}) добавляют три пары "ключ-значение" к промежуточному KeyValueStore объект (названный intermKVStore) использование вектора ячейки, чтобы задать ключи.

Пример: addmulti(intermKVStore,[1 2 3 4],{sum(X); mean(X); max(X); min(X)}) добавляют четыре пары "ключ-значение" к промежуточному KeyValueStore объект с помощью числового вектора, чтобы задать ключи.

Пример: addmulti(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

Значения, заданные как массив ячеек. Каждая запись в массиве ячеек задает значение в паре "ключ-значение", таким образом, numel(values) должно быть равно количеству ключей. Записи в массиве ячеек могут быть любым объектом MATLAB®, включая все допустимые типы данных MATLAB.

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

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

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

Примечание

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

Пример: addmulti(intermKVStore,{'Sum'; 'Count'; 'Variance'},{sum(X); numel(X); var(X)}) добавляют три пары "ключ-значение" к промежуточному KeyValueStore возразите названному intermKVStore.

Пример: addmulti(intermKVStore,[1 2 3 4],{sum(X); mean(X); max(X); min(X)}) добавляют четыре пары "ключ-значение" к промежуточному KeyValueStore объект с помощью вектора ячейки.

Пример: addmulti(outKVStore,'Stats',{[mean(X) max(X) min(X) var(X) std(X)]}) добавляет одна пара "ключ-значение" к итоговому KeyValueStore возразите названному outKVStore.

Пример: addmulti(outKVStore,{'Distance' 'Time'},{table.Distance table.Time}) добавляют две переменные использования пар "ключ-значение" в таблице, чтобы задать значения.

Советы

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

Введенный в R2014b

Для просмотра документации необходимо авторизоваться на сайте