は、我々はスパークジョブは、糸とdataprocクラスタ上で実行している - 我々はまた、ジョブの状態のための一定のポーリングを行い、私たちは糸からジョブの状態を監視しているPythonでラッパープログラムを持っている - 次のように示されているよう:dataprocクライアントからの糸の状態 - なぜそれは常にリストオブジェクトですか?
dataproc = discovery.build('dataproc', 'v1', credentials=credentials)
job_id = '8873a82c-6201-48d4-8ad3-d8f236ef9c49'
projectId='dev-111111'
REGION = 'global'
result = dataproc.projects().regions().jobs().get(projectId=projectId,region=REGION,jobId=job_id).execute()
print result['yarnApplications'][0]['state']
「結果」は、上記のJSONオブジェクトであり、JSONオブジェクト内の最初で唯一の要素そのジョブの状態を含むリストオブジェクトである「yarnApplications」と呼ばれるフィールドがあり、Googleのdataprocのdoc
here
によって示唆されるよう
私たちは興味があります。
質問i s - なぜ、この "yarnApplications"オブジェクトは常に1つの糸ジョブを実行しているにもかかわらず常にリストオブジェクトですか?我々は、糸が複数の試行を試みている状況を見てきました。この状況では、 "yarnApplications"フィールドには複数の要素が含まれていますか?
また、糸に1つのジョブしか実行されていない場合、「yarnApplications」リストオブジェクトには1つの要素しか含まれません。
これはdataprocクライアントのベータ版であることを理解していますが、実動システムが稼動しているので、入力や提案は感謝します。
おかげDataproc API job definitionパー
ありがとう、デニス、あなたのコメントをいただきありがとうございます。 あなたは「あなたがヤーンで1つの仕事しかしていないと、実際には保証されている」と言いました。それがドキュメンテーションのものなら、共有してもよろしいですか?再度、感謝します! –
"ヤーンが複数の試行を行っている"ところで、YARNの1つのYARNアプリケーションIDの下に残り、複数の試行がその中にリストされている状況で説明しました。 "yarn applications -list -appStates ALL"は、すべての試行に対して1つのアプリケーションIDだけを返します。だからDataprocは、1つのアプリケーションだけが動作しているときにYARNアプリケーションを浮上させることに関して特別なことは約束していません。むしろDataprocはjobidタグを使ってYARNアプリケーションを追跡します。ドライバプログラム自体がYARNアプリケーションの発行を再試行すると、Dataprocは実際に複数のアプリケーションを表示します。 –
現在のドキュメントは、[ジョブリソース定義](https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.jobs#resource-job)内にありますが、再試行がジョブ内にリストされているYARNアプリケーションの数にどのように影響するかについて詳しく調べてください。その動作はエンジンによって異なる場合があります。結局、DataprocのYARNアプリケーションのリストには、クラスタ内で 'yarn application -list'を実行するのと同様の内容が含まれますが、アプリケーションを生成したjobidによってフィルタリングされます。 –