exponenta event banner

добавить

Добавление одной пары ключ-значение в KeyStartStore

Описание

пример

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

Примеры

свернуть все

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

inds = tabularTextDatastore('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, сложный, логический или разреженный.

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

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

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

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

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

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

Примечание

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

Пример: add(intermKVStore,'Sum',sum(X)) задает одиночное скалярное значение для пары с ключом.

Пример: add(outKVStore,'Stats',[mean(X) max(X) min(X) var(X) std(X)]) задает числовой массив в качестве значения для пары с ключом.

Совет

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

Представлен в R2014b