KeyValueStore

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

Описание

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

Создание

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

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

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

Примеры

свернуть все

Следующая функция map использует 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

Следующая функция map использует addmulti для добавления нескольких пар "ключ-значение" к промежуточному KeyValueStore объект (с именем intermKVStore). Обратите внимание, что эта функция map собирает несколько ключей в 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