Этот пример показывает, как отладить ваши алгоритмы mapreduce
в MATLAB® с помощью простого файла в качестве примера, MaxMapReduceExample.m
. Отладка позволяет вам следовать за перемещением данных между различными фазами выполнения mapreduce
и осмотреть состояние всех промежуточных переменных.
Установите одну или несколько точек останова в своей карте или уменьшайте файлы функции, таким образом, можно исследовать значения переменных, где вы думаете, что проблема. Для получения дополнительной информации смотрите Установку точек останова.
Откройте файл maxArrivalDelayMapper.m
.
edit maxArrivalDelayMapper.m
Установите точку останова на строке 9. Эта точка останова заставляет выполнение mapreduce
делать паузу прямо, прежде чем каждый вызов функции карты добавит пару "ключ-значение" в промежуточный объект KeyValueStore
, названный intermKVStore
.
Запустите файл mapreduce
в качестве примера MaxMapReduceExample.m
. Задайте mapreducer(0)
, чтобы гарантировать, что алгоритм не запускается параллельно, поскольку параллельное выполнение mapreduce
с помощью Parallel Computing Toolbox™ игнорирует точки останова.
mapreducer(0); MaxMapReduceExample
MATLAB останавливает выполнение файла, когда это сталкивается с точкой останова в функции карты. Во время паузы в выполнении можно навести на различные имена переменных в функции карты или ввести одни из имен переменных в командной строке, чтобы осмотреть значения.
В этом случае отображение указывает, что пока еще нет никаких пар "ключ-значение" в intermKVStore
.
Продолжите мимо точки останова. Можно использовать dbstep
, чтобы выполнить одну строку или dbcont
, чтобы продолжить выполнение, пока MATLAB не сталкивается с другой точкой останова. Также можно нажать Step или Continue во вкладке Editor. Для получения дополнительной информации обо всех доступных параметрах, смотрите Отладку программа MATLAB.
В этом случае используйте dbstep
(или нажмите Step) выполнить только строку 9, который добавляет пару "ключ-значение" в intermKVStore
. Осмотрите новое отображение для intermKVStore
.
Теперь, используйте dbcont
(или нажмите Continue) продолжать выполнение mapreduce
. Во время следующего вызова функции карты MATLAB останавливается снова на строке 9. Новое отображение для intermKVStore
указывает, что не содержит пар "ключ-значение", потому что отображение предназначается, чтобы показать только новые пары "ключ-значение", которые добавляются в текущем вызове карты (или уменьшайте), функция.
Прошлая строка шага 9 снова использований dbstep
(или нажимают Step) добавить следующую пару "ключ-значение" в intermKVStore
и осмотреть новое отображение для переменной. MATLAB отображает только пару "ключ-значение", добавленную во время текущего вызова функции карты.
Завершите отладку функции карты путем удаления точки останова и закрытия файла maxArrivalDelayMapper.m
.
Можно использовать тот же процесс, чтобы установить точки останова и шаг посредством выполнения уменьшать функции. Уменьшать функцией для этого примера является maxArrivalDelayReducer.m
. Откройте этот файл для редактирования.
edit maxArrivalDelayReducer.m
Установите две точки останова: один на строке 10, и один на строке 13. Это позволяет вам осмотреть ValueIterator
и итоговые пары "ключ-значение", добавленные к выводу, outKVStore
.
Запустите основной файл в качестве примера.
MaxMapReduceExample
Выполнение примера сделает паузу, когда с точкой останова на строке 10 столкнутся. Отображение отладки для ValueIterator
указывает на активный ключ и остаются ли какие-либо значения, чтобы быть полученными.
Теперь, удалите точку останова на строке 10 и используйте dbcont
(или нажмите Continue), чтобы продолжить выполнение примера, пока следующая точка останова не достигнута (на строке 13). Поскольку это уменьшает функцию, постоянно сравнивает каждое новое значение от ValueIterator
до глобального максимума, концов выполнения mapreduce
путем добавления одной пары "ключ-значение" в outKVStore
.
Используйте dbstep
(или нажмите Step) выполнить строку 13 только. Отображение для outKVStore
показывает глобальное максимальное значение, что mapreduce
возвратится как окончательный ответ.
Теперь используйте dbcont
(или нажмите Continue) усовершенствовать выполнение, позволяя примеру закончить запускаться. mapreduce
возвращает конечные результаты.
Map 100% Reduce 100% ans = Key Value _________________ ______ 'MaxArrivalDelay' [1014]
Для полного руководства по отладке в MATLAB смотрите Отладку и Анализ.