MapReduce算法调试
此示例显示如何调试您的mapreduce
MATLAB算法®使用一个简单的示例文件,MaxMapReduceExample.m
.调试使您能够跟踪数据在不同阶段之间的移动mapreduce
执行并检查所有中间变量的状态。
设置断点
在map或reduce函数文件中设置一个或多个断点,以便检查您认为问题所在的变量值。有关更多信息,请参见设置断点.
打开文件maxArrivalDelayMapper.m
.
编辑maxArrivalDelayMapper.m
在第9行设置断点。的执行mapreduce
如果要在每次调用map函数之前暂停,则向中间函数添加一个键值对KeyValueStore
对象,名为intermKVStore
.
执行mapreduce
运行mapreduce
示例文件MaxMapReduceExample.m
.指定mapreduce (0)
保证算法不并行运行,自并行执行mapreduce
使用并行计算工具箱™忽略断点。
mapreduce (0);MaxMapReduceExample
MATLAB在遇到map函数中的断点时停止文件的执行。在执行暂停期间,您可以将鼠标悬停在map函数中的不同变量名上,或者在命令行中键入其中一个变量名来检查值。
在这种情况下,显示指示到目前为止,中还没有键-值对intermKVStore
.
Step Through Map函数
继续越过断点。你可以使用
dbstep
执行单行,或者dbcont
继续执行,直到MATLAB遇到另一个断点。您也可以单击一步或继续在编辑器选项卡。有关所有可用选项的详细信息,请参见调试MATLAB代码文件.在这种情况下,使用
dbstep
(或点击一步),只执行第9行,该行将一个键值对添加到intermKVStore
.检查新显示器intermKVStore
.现在,使用
dbcont
(或点击继续)继续执行mapreduce
.在下一个调用map函数时,MATLAB在第9行再次停止。的新显示屏intermKVStore
指示它不包含任何键-值对,因为显示意味着仅显示大多数最近在map(或reduce)函数的当前调用中添加的键值对。再次使用第9行
dbstep
(或点击一步),将下一个键值对添加到intermKVStore
,并检查变量的新显示。MATLAB只显示在当前调用map函数期间添加的键值对。通过删除断点并关闭文件来完成映射功能的调试
maxArrivalDelayMapper.m
.
逐步递减函数
您可以使用相同的过程设置断点并逐步执行reduce函数。本例的reduce函数为
maxArrivalDelayReducer.m
.打开该文件进行编辑。编辑maxArrivalDelayReducer.m
设置两个断点:一个在第10行,一个在第13行。这使您能够检查
ValueIterator
最后将键值对添加到输出中,outKVStore
.运行主示例文件。
MaxMapReduceExample
当遇到第10行上的断点时,示例的执行将暂停。的调试显示
ValueIterator
指示活动键以及是否仍有值要检索。现在,删除第10行上的断点并使用
dbcont
(或点击继续)继续执行示例,直到到达下一个断点(第13行)。因为这个reduce函数不断地比较对象中的每个新值ValueIterator
对于全局最大值,mapreduce
到中添加一个键值对,执行结束outKVStore
.使用
dbstep
(或点击一步)只执行第13行。的显示outKVStore
显示全局最大值mapreduce
将作为最终答案返回。现在使用
dbcont
(或点击继续)来加速执行,使示例能够完成运行。mapreduce
返回最终结果。地图ans =键值100%减少100% _________________ ______ ' MaxArrivalDelay”[1014]
有关在MATLAB中调试的完整指南,请参见调试与分析.