2016-10-09 4 views
2

私はSpark + Pythonを使っていくつかの作品を完成させています。素晴らしいですが、私の心には質問があります。変換のスパーク・ジョブは何ですか?

ここで、変身のスパークジョブは何ですか? は、アクションジョブが労働者(エグゼキューター)で行われている間スパークマスター(またはドライバー)で行われ、変換ジョブである、またはそれらの両方は、労働者(エグゼキューター)に

おかげ

答えて

1

(奴隷別名)労働者は、執行がタスクを実行するために を生きるスパークインスタンスを実行しています。

変換は作業メソッドで実行され、アクションメソッドが呼び出されると、計算されたデータがドライバに返されます。全体の計算を表すために

1.Create RDDグラフ、RDDSの即ちDAG (directed acyclic graph)

enter image description here

Sparkにおけるアプリケーションは三の段階で実行されます。

2. RDDグラフに基づく論理実行計画であるステージグラフ、つまりDAG of stagesを作成します。ステージはシャッフル境界でRDDグラフを分割することで作成されます。

3.計画に基づいて、schedule and execute作業員の作業

+0

P2に返されました。 –

0

変換が執行時に実行を行っています。

実行者は、エグゼキュータとドライバで実行されます。エグゼキュータではまだほとんどの作業が行われていますが、出力を減らすなどの最終ステップはドライバで実行されます。

+0

こんにちは、Ilias、返信いただきありがとうございます!私はまだ怠惰な評価であるので、なぜエグゼクティブで変換を行う必要があるのだろうと思っていますか? –

+0

こんにちはオラフ、遅延評価とは、アクションの後に実行されないと変換が実行されないことを意味します。アクションは呼び出された後にのみ実行されます。例えば、my_rdd = sc.parallelize([1,2,3,4])、my_rdd = my_rdd.map(ラムダx:x + 1)。アクションがないので変換は実行されません。 –

+0

こんにちは、イリアス、ありがとう。 –

0

RDDでアクションが呼び出されると、SparkはDAGを作成してDAGスケジューラに送信します。

DAGスケジューラは、オペレータをタスクの段階に分割します。ステージは、入力データのパーティションに基づくタスクで構成されます。 DAGスケジューラは、演算子を一緒にパイプラインします。

ステージはタスクスケジューラに渡されます。タスクスケジューラは、クラスタマネージャ(スパークスタンドアローン/糸/メゾス)を介してタスクを起動します。タスクスケジューラはステージの依存関係を認識しません。

タスク(変換は)(エグゼキュー) とアクション(コレクト/取る)労働者で実行それが ドライバでデータを持ち帰ると呼ばれています。

+0

こんにちはガーバー、返信いただきありがとうございます。エキサイターでスパークアクションが実行されますか?タスクスケジューラは結果をドライバに戻しますか? –

+0

@Olafapple変換は、ワーカーの作業方法で実行され、計算されたデータは、ドライバに戻された –

関連する問題