В этом примере показано, как отладить mapreduce алгоритмы в MATLAB ® с использованием простого примера файла ,MaxMapReduceExample.m. Отладка позволяет отслеживать перемещение данных между различными фазами mapreduce выполнение и проверка состояния всех промежуточных переменных.
Установите одну или несколько точек останова на карте или сократите файлы функций, чтобы можно было изучить значения переменных, где, по вашему мнению, проблема. Дополнительные сведения см. в разделе Установка точек останова.
Открыть файл maxArrivalDelayMapper.m.
edit maxArrivalDelayMapper.mУстановите точку останова в строке 9. Эта точка останова вызывает выполнение mapreduce пауза непосредственно перед каждым вызовом функции карты добавляет пару ключ-значение к промежуточному KeyValueStore объект, имя intermKVStore.

Запустить mapreduce пример файла MaxMapReduceExample.m. Определить mapreducer(0) чтобы гарантировать, что алгоритм не работает параллельно, так как параллельное выполнение mapreduce использование параллельного вычисления Toolbox™ игнорирует точки останова.
mapreducer(0); MaxMapReduceExample
MATLAB останавливает выполнение файла при обнаружении точки останова в функции карты. Во время паузы выполнения можно наведить курсор на различные имена переменных в функции карты или ввести одно из имен переменных в командной строке для проверки значений.
В этом случае на дисплее отображается, что пока пары «ключ-значение» отсутствуют в intermKVStore.

Продолжить мимо точки останова. Вы можете использовать dbstep для выполнения одной строки или dbcont для продолжения выполнения до тех пор, пока MATLAB не встретит другую точку останова. Можно также
щелкнуть Шаг (Step) или Продолжить (Continue)
на вкладке
Редактор (Editor). Дополнительные сведения обо всех доступных параметрах см. в разделе Отладка программы MATLAB.
В этом случае используйте dbstep (или нажмите
Step), чтобы выполнить только строку 9, которая добавляет пару ключ-значение к intermKVStore. Проверьте новый экран для intermKVStore.

Теперь используйте dbcont (или нажмите Продолжить
), чтобы продолжить выполнение 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 (или нажмите кнопку
«Продолжить»), чтобы продолжить выполнение, позволяя примеру завершить выполнение. mapreduce возвращает окончательные результаты.
Map 100% Reduce 100%
ans =
Key Value
_________________ ______
'MaxArrivalDelay' [1014]Полное руководство по отладке в MATLAB см. в разделе Отладка и анализ.