Добавьте одну пару "ключ-значение" в KeyValueStore
Используйте add
в map и reduce функциях, чтобы передать данные в промежуточный и итоговый KeyValueStore
. Этот простой пример использует единичные map и reduce функции, которые передают входные параметры, сквозные выходу.
inds = datastore('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
KVStore
— Объект хранения пары "ключ-значение"KeyValueStore
объектОбъект хранения пары "ключ-значение", заданный как KeyValueStore
объект. mapreduce
функция автоматически создает KeyValueStore
объект во время выполнения:
В функции карты, имени промежуточного KeyValueStore
объект является третьим входным параметром к функции карты, myMapper(data, info, intermKVStore)
. Используйте то же самое имя переменной, чтобы добавить промежуточные пары "ключ-значение" с add
или addmulti
в функции карты.
В уменьшать функции, имени итогового KeyValueStore
объект является третьим входным параметром к уменьшать функции, myReducer(intermKey, intermValIter, outKVStore)
. Используйте то же самое имя переменной, чтобы добавить итоговые пары "ключ-значение" с add
или addmulti
в уменьшать функции.
Для получения дополнительной информации смотрите KeyValueStore
.
key
— КлючКлюч, заданный в виде числа, вектора символов или строки.
Все ключи, добавленные функцией карты, должны иметь тот же класс. Ключи, добавленные уменьшать функцией также, должны иметь тот же класс, но тот класс может отличаться от класса ключей, добавленных функцией карты.
Числовыми ключами не может быть 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
value
ЗначениеЗначение, заданное как любой объект MATLAB. Это включает все допустимые типы данных MATLAB.
OutputType
аргумент mapreduce
влияет на тип значений, которые может добавить уменьшать функция:
Если OutputType
'Binary'
(значение по умолчанию), затем значение, добавленное уменьшать функцией, может быть любым объектом MATLAB.
Если OutputType
'TabularText'
, затем значение, добавленное уменьшать функцией, может быть числовым скаляром, вектором символов, или представить скаляр в виде строки при использовании add
функция. Кроме того, можно использовать addmulti
функция, чтобы добавить несколько значений с числовым вектором, вектором ячейки векторов символов, вектором ячейки числовых скаляров или массивом строк. В каждом случае числовыми значениями не может быть NaN
, комплексный, логический, или разреженный.
Вышеупомянутые требования пары "ключ-значение" могут не согласиться при использовании других продуктов с mapreduce. См. документацию для соответствующего продукта, чтобы получить специфичные для продукта требования пары "ключ-значение".
Пример: add(intermKVStore,'Sum',sum(X))
задает одно скалярное значение, чтобы соединиться с ключом.
Пример: add(outKVStore,'Stats',[mean(X) max(X) min(X) var(X) std(X)])
задает числовой массив как значение, чтобы соединиться с ключом.
Избегайте использования add
в цикле, когда это может негативно влиять на mapreduce
время выполнения. Вместо этого используйте массивы ячеек, чтобы собрать несколько значений (использующий векторизованные операции, если возможный), и используйте один вызов addmulti
.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.