exponenta event banner

KeyValueStore

Хранить пары ключ-значение для использования с mapreduction

Описание

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

Создание

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

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

addДобавление одной пары ключ-значение в KeyStartStore
addmultiДобавление нескольких пар «ключ-значение» в KeyStartStore

Примеры

свернуть все

В следующей функции отображения используется 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