Добавление Нескольких Пар ключ/значение к KeyValueStore
addmulti(KVStore,keys,values)
добавляет несколько пар "ключ-значение" к addmulti(KVStore,keys,values)
KVStore
, который является KeyValueStore
, созданным во время выполнения mapreduce
. Используйте addmulti
в карте или уменьшите функцию, записанную для использования с mapreduce
, чтобы хранить промежуточную или итоговую информацию пары "ключ-значение".
Используйте add
и addmulti
в карте и уменьшите функции, чтобы передать данные в промежуточный и итоговый KeyValueStore
. Этот простой пример использует единичную карту, и уменьшите функции, которые передают входные параметры, сквозные выводу.
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
KVStore
Объект хранения пары "ключ-значение"KeyValueStore
Объект хранения пары "ключ-значение", заданный как объект KeyValueStore
. Функция mapreduce
автоматически создает объект KeyValueStore
во время выполнения:
В функции карты имя промежуточного объекта KeyValueStore
является третьим входным параметром к функции карты, myMapper(data, info, intermKVStore)
. Используйте то же самое имя переменной, чтобы добавить промежуточные пары "ключ-значение" с add
или addmulti
в функции карты.
В уменьшать функции имя итогового объекта KeyValueStore
является третьим входным параметром к уменьшать функции, myReducer(intermKey, intermValIter, outKVStore)
. Используйте то же самое имя переменной, чтобы добавить итоговые пары "ключ-значение" с add
или addmulti
в уменьшать функции.
Для получения дополнительной информации смотрите KeyValueStore
.
ключи
КлючиКлючи, заданные в виде числа, числового вектора, вектора символа, массива строк, вектора ячейки векторов символов или вектора ячейки числовых скаляров. Если ключи являются числовым вектором, вектором ячейки или массивом строк, то каждая запись задает различный ключ.
Все ключи, добавленные функцией карты, должны иметь тот же класс. Ключи, добавленные уменьшать функцией, должны также иметь тот же класс, но тот класс может отличаться от класса ключей, добавленных функцией карты.
Числовыми ключами не может быть NaN
, комплексный, логический, или разреженный.
Пример: addmulti (intermKVStore, {'Сумма'; количество; 'Отклонение'}, {сумма (X); numel (X); var (X)})
, добавляют три пары "ключ-значение" к промежуточному объекту KeyValueStore
(названный intermKVStore
) использование вектора ячейки, чтобы задать ключи.
Пример: addmulti (intermKVStore, [1 2 3 4], {сумма (X); среднее значение (X); макс. (X); min (X)})
, добавляют четыре пары "ключ-значение" к промежуточному объекту KeyValueStore
с помощью числового вектора, чтобы задать ключи.
Пример: addmulti (outKVStore, 'Статистика', {[среднее значение (X) макс. (X) min (X) var (X) станд. (X)]})
добавляет единственную пару "ключ-значение" к итоговому объекту KeyValueStore
(названный outKVStore
) использование вектора символа как ключ.
Типы данных: единственный
| удваиваются
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| строка
значения
ЗначенияЗначения, заданные как массив ячеек. Каждая запись в массиве ячеек задает значение в паре "ключ-значение", таким образом, numel(values)
должен быть равен количеству ключей. Записи в массиве ячеек могут быть любым объектом MATLAB®, включая все допустимые типы данных MATLAB.
Аргумент OutputType
mapreduce
влияет на тип значений, которые может добавить уменьшать функция:
Если OutputType
является 'Binary'
(значение по умолчанию), то значение, добавленное уменьшать функцией, может быть любым объектом MATLAB.
Если OutputType
является 'TabularText'
, то значение, добавленное уменьшать функцией, может быть числовым скаляром, вектором символа, или представить скаляр в виде строки при использовании функции add
. Кроме того, можно использовать функцию addmulti
, чтобы добавить несколько значений с числовым вектором, вектором ячейки векторов символов, вектором ячейки числовых скаляров или массивом строк. В каждом случае числовыми значениями не может быть NaN
, комплексный, логический, или разреженный.
Вышеупомянутые требования пары "ключ-значение" могут не согласиться при использовании других продуктов с mapreduce. См. документацию для соответствующего продукта, чтобы получить специфичные для продукта требования пары "ключ-значение".
Пример: addmulti (intermKVStore, {'Сумма'; количество; 'Отклонение'}, {сумма (X); numel (X); var (X)})
, добавляют три пары "ключ-значение" к промежуточному объекту KeyValueStore
, названному intermKVStore
.
Пример: addmulti (intermKVStore, [1 2 3 4], {сумма (X); среднее значение (X); макс. (X); min (X)})
, добавляют четыре пары "ключ-значение" к промежуточному объекту KeyValueStore
с помощью вектора ячейки.
Пример: addmulti (outKVStore, 'Статистика', {[среднее значение (X) макс. (X) min (X) var (X) станд. (X)]})
добавляет единственную пару "ключ-значение" к итоговому объекту KeyValueStore
, названному outKVStore
.
Пример: addmulti (outKVStore, {'Расстояние' 'Время'}, {таблица. Таблица Distance. Время})
, добавляют две пары "ключ-значение" с помощью переменных в таблице, чтобы задать значения.
Избегайте использования add
в цикле, когда он может негативно влиять на время выполнения mapreduce
. Вместо этого используйте массивы ячеек, чтобы собрать несколько значений (использующий векторизованные операции, если возможный), и используйте единственный вызов addmulti
.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.