В этом примере показано, как отладить ваш 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 смотрите Отладку и Анализ.