В этом примере показано, как выполнить отладку mapreduce
алгоритмы в MATLAB® используя простой файл примера, MaxMapReduceExample.m
. Отладка позволяет вам следить за перемещением данных между различными фазами mapreduce
выполнение и проверка состояния всех промежуточных переменных.
Установите одну или несколько точек по оси Х на карте или уменьшите файлы функции, чтобы вы могли изучить значения переменных, где, по вашему мнению, проблема. Для получения дополнительной информации см. раздел «Установка точек останова».
Откройте файл maxArrivalDelayMapper.m
.
edit maxArrivalDelayMapper.m
Установите точку останова на линии 9. Эта точка останова вызывает выполнение mapreduce
пауза непосредственно перед каждым вызовом функции map добавляет пару "ключ-значение" к промежуточному KeyValueStore
объект, именованный intermKVStore
.
Запустите mapreduce
пример файла MaxMapReduceExample.m
. Задайте mapreducer(0)
убедиться, что алгоритм не запускается параллельно, так как параллельное выполнение mapreduce
Использование Parallel Computing Toolbox™ игнорирует точки останова.
mapreducer(0); MaxMapReduceExample
MATLAB останавливает выполнение файла, когда он встречается с точкой останова в функции map. Во время паузы в выполнении можно навести указатель мыши на различные имена переменных в функции map или ввести одно из имен переменных в командной строке, чтобы просмотреть значения.
В этом случае отображение указывает, что пока нет пар "ключ-значение" в intermKVStore
.
Продолжите мимо точки останова. Можно использовать dbstep
для выполнения одной линии или dbcont
продолжить выполнение до тех пор, пока MATLAB не столкнется с другой точкой останова. Также можно щелкнуть
Step или Continue на
вкладке Editor. Дополнительные сведения обо всех доступных опциях см. в разделе Отладка программы MATLAB.
В этом случае используйте dbstep
(или
нажмите Step), чтобы выполнить только линию 9, которая добавляет пару "ключ-значение" к intermKVStore. Смотрите новое отображение на наличие
intermKVStore
.
Теперь используйте dbcont
(или нажмите
Continue), чтобы продолжить выполнение mapreduce
. Во время следующего вызова функции map MATLAB снова останавливается на линии 9. Новое отображение для intermKVStore
указывает, что он не содержит пар "ключ-значение", поскольку отображение предназначено для отображения только самых
последних пар "ключ-значение", которые добавляются в текущем вызове к функции map (или reduce).
Пройдите мимо линии 9 еще раз, используя dbstep
(или
нажмите Step), чтобы добавить следующую пару "ключ-значение" к intermKVStore, и проверьте новое отображение переменной. MATLAB отображает только пару "ключ-значение", добавленную во время текущего вызова функции map.
Завершите отладку функции map, удалив точку останова и закрыв файл 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 смотрите в Отладка и анализ.