KeyValueStore

Сохраните пары "ключ-значение" для использования с mapreduce

Описание

Функция mapreduce автоматически создает объект KeyValueStore во время выполнения и использует его, чтобы сохранить пары "ключ-значение", добавленные map и reduce функциями. Несмотря на то, что вы никогда не должны явным образом создавать объект KeyValueStore использовать mapreduce, действительно необходимо использовать функции объекта add и addmulti, чтобы взаимодействовать с этим объектом в map и reduce функциях.

Создание

Функция mapreduce автоматически создает объекты KeyValueStore во время выполнения.

Функции объекта

addДобавьте одну пару "ключ-значение" в KeyValueStore
addmultiДобавление Нескольких Пар ключ/значение к KeyValueStore

Примеры

свернуть все

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

function MeanDistMapFun(data, info, intermKVStore)
    distances = data.Distance(~isnan(data.Distance));
    sumLenKey = 'sumAndLength';
    sumLenValue = [sum(distances), length(distances)];
    add(intermKVStore, sumLenKey, sumLenValue);
end

Следующая функция карты использует addmulti, чтобы добавить несколько пар "ключ-значение" в промежуточный объект KeyValueStore (названный intermKVStore). Обратите внимание на то, что эта функция карты собирает несколько ключей в переменной intermKeys и несколько значений в переменной intermVals. Это готовит один вызов addmulti, чтобы добавить все пары "ключ-значение" целиком. Это - лучшая практика использовать один вызов addmulti вместо того, чтобы использовать add в цикле.

function meanArrivalDelayByDayMapper(data, ~, intermKVStore)
% Mapper function for the MeanByGroupMapReduceExample.

% Copyright 2014 The MathWorks, Inc.

% Data is an n-by-2 table: first column is the DayOfWeek and the second
% is the ArrDelay. Remove missing values first.
delays = data.ArrDelay;
day = data.DayOfWeek;
notNaN =~isnan(delays);
day = day(notNaN);
delays = delays(notNaN);

% find the unique days in this chunk
[intermKeys,~,idx] = unique(day, 'stable');

% group delays by idx and apply @grpstatsfun function to each group
intermVals = accumarray(idx,delays,size(intermKeys),@countsum);
addmulti(intermKVStore,intermKeys,intermVals);

function out = countsum(x)
n = length(x); % count
s = sum(x); % mean
out = {[n, s]};

Смотрите также

Введенный в R2014b

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