このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
MapReduce アルゴリズムのデバッグ
この例では、簡単なサンプル ファイル MaxMapReduceExample.m
を使用して、MATLAB® で mapreduce
アルゴリズムをデバッグする方法を説明します。デバッグにより、mapreduce
実行の異なるフェーズ間のデータの移動に従い、すべての中間変数の状態を検査できます。
ブレークポイントの設定
問題があると思われる変数値を調べられるように、map 関数または reduce 関数のファイルに 1 つ以上のブレークポイントを設定できます。詳細は、ブレークポイントを設定するを参照してください。
ファイル maxArrivalDelayMapper.m
を開きます。
edit maxArrivalDelayMapper.m
9 行目にブレークポイントを設定します。このブレークポイントにより、キーと値のペアを intermKVStore
という名前の中間 KeyValueStore
オブジェクトに追加する各 map 関数の呼び出しの直前に、mapreduce
の実行が一時停止します。
mapreduce の実行
mapreduce
のサンプル ファイル MaxMapReduceExample.m
を実行します。このアルゴリズムが並列実行されないことを確実にするため、mapreducer(0)
を指定します。Parallel Computing Toolbox™ を使用した mapreduce
の並列実行ではブレークポイントが無視されるためです。
mapreducer(0); MaxMapReduceExample
MATLAB は、map 関数内のブレークポイントに遭遇すると、ファイルの実行を停止します。実行の一時停止中、map 関数内の様々な変数名の上にホバーするか、コマンド ラインに変数名を入力して、値を検査できます。
この場合の表示は、intermKVStore
にまだキーと値のペアがないことを示しています。
map 関数のステップ実行
ブレークポイントを超えて続行します。
dbstep
を使用して、1 行ずつ実行したり、dbcont
を使用して MATLAB が別のブレークポイントに遭遇するまで実行を続行したりできます。あるいは、[エディター] タブの[ステップ] または
[続行] をクリックできます。使用可能なすべてのオプションについての詳細は、MATLAB コード ファイルのデバッグを参照してください。
この場合、
dbstep
を使用 (または[ステップ] をクリック) して 9 行目のみを実行します。すると、キーと値のペアが
intermKVStore
に追加されます。intermKVStore
の新しい表示を検査します。次に
dbcont
を使用 (または[続行] をクリック) して
mapreduce
の実行を続行します。map 関数を "次に" 呼び出したとき、MATLAB は再び 9 行目で停止します。intermKVStore
の新しい表示は、キーと値のペアが含まれないことを示しています。これは、表示は現在の map 関数 (または reduce 関数) への呼び出しで追加された "最新の" キーと値のペアのみを表示するためです。dbstep
を使用 (または[ステップ] をクリック) して再び 9 行目を超えてステップ実行し、次のキーと値のペアを
intermKVStore
に追加し、新しい表示で変数を検査します。MATLAB には、map 関数の現在の呼び出し中に追加されたキーと値のペアのみ表示されます。ブレークポイントを削除し、ファイル
maxArrivalDelayMapper.m
を閉じて map 関数のデバッグを完了します。
reduce 関数のステップ実行
同じプロセスを使用して、reduce 関数にブレークポイントを設定し、ステップ実行を行うことができます。この例の reduce 関数は
maxArrivalDelayReducer.m
です。このファイルを編集用に開きます。edit maxArrivalDelayReducer.m
10 行目と 13 行目に 1 つずつ、2 つのブレークポイントを設定します。これにより、
ValueIterator
と出力outKVStore
に追加された最終的なキーと値のペアを検査できます。メインのサンプル ファイルを実行します。
MaxMapReduceExample
10 行目のブレークポイントに到達すると、このサンプルの実行が一時停止します。
ValueIterator
のデバッグ表示では、アクティブなキーと、取得される値が残っているかどうかが示されます。次に、10 行目のブレークポイントを削除し、
dbcont
を使用 (または[続行] をクリック) して、次のブレークポイント (13 行目) に到達するまでサンプルの実行を続行します。この reduce 関数は
ValueIterator
の新しい各値と大域的最大値との比較を継続するため、mapreduce
の実行はoutKVStore
にキーと値のペアを追加することで終了します。dbstep
を使用 (または[ステップ] をクリック) して 13 行目のみ実行します。
outKVStore
の表示には、mapreduce
から最終的な解答として返される大域的最大値が示されます。次に、
dbcont
を使用 (または[続行] をクリック) して実行を進め、サンプルの実行が終了できるようにします。
mapreduce
は最終的な結果を返します。Map 100% Reduce 100% ans = Key Value _________________ ______ 'MaxArrivalDelay' [1014]
MATLAB でのデバッグについての詳しいガイドは、デバッグと解析を参照してください。