1

私が取り組んでいるアプリケーションでは、多くの mapreduce cron ジョブが実行されており、時々それらのいくつかがエラー (ほとんどの ApplicationErrors、TransientErrors、DatabaseErrors、TimeOuts など) を生成します。邪魔だ。

ただし、デバッグおよびテスト中に、どのジョブがどのエラーを引き起こしたかを特定することは不可能であることがわかりました。ログは通常、インスタンスのみを提供しますが、ジョブの ID についてもヒントはありません。URL は一般的な /mapreduce/worker_callback であるため、どちらも役に立ちません。

何かが欠けているように感じます。または、特定の MR パイプラインに固有のログを見つけるために、どのログがどの MR パイプラインに属しているか、またはその逆かを判断する方法が実際にはありませんか?

4

1 に答える 1

1

あなたのログには、task_name=appengine-mrshard-158112310423699B53FC1-22-0. パーツは特定の158112310423699B53FC1ジョブ ID に対応します。このジョブの詳細は通常、url-to-your-app/mapreduce にあります。そうすれば、ジョブに付けた名前を見つけることができます。

ジョブの詳細を表示する

特定のジョブ ID (例: ) の詳細を表示するには158112310423699B53FC1:

appid.appspot.com/mapreduce/detail?mapreduce_id=158112310423699B53FC1

パイプライン全体を表示

ジョブ ID からルート パイプライン ID を見つけるには、次の手順を使用します。

  1. _AE_MR_MapreduceStateジョブ ID を使用してテーブルをクエリします。データストア ビューアの使用:

    SELECT * FROM _AE_MR_MapreduceState WHERE __key__ = Key('_AE_MR_MapreduceState','158112310423699B53FC1')
    

    パイプライン ID は、mapreduce_spec列に として表示されpipeline_idます。

  2. 見つかったパイプライン ID は、おそらくルート パイプライン ID ではありません。ルート パイプライン ID を見つけるには、クエリを実行します_AE_Pipeline_Record。データストア ビューアの使用:

    SELECT * FROM _AE_Pipeline_Record WHERE __key__ = Key('_AE_Pipeline_Record', '653a3bd9a90f11e28ff6a3556e435fbc')
    

    列 root_pipeline には、MapReduce ジョブのルート パイプライン ID のキーがあります。

  3. 最後に、ルート パイプライン キーの名前を使用して、ここで MapReduce パイプライン全体を表示できます。

    appid.appspot.com/mapreduce/pipeline/status?root=0607a90aa90f11e2bbfea3556e435fbc

于 2013-05-16T13:18:53.213 に答える