2017-06-25 6 views
1

私はDatabricks Community Editionを使用しています。Sparkアプリケーションはいつ複数のジョブとステージを作成できますか?

My Sparkプログラムが複数のジョブを作成します。どうして?私は1つの仕事があるべきと思って、それは複数の段階を持つことができます。

私の理解は、スパークプログラムが提出されると、1つのジョブ、複数のステージ(通常、シャッフル操作ごとに新しいステージ)を作成します。 以下は、2つのシャッフル操作(reduceByKey/SortByKey)と1つのアクション(Take(5))がある場合に使用されるコードです。

rdd1 = sc.textFile('/databricks-datasets/flights') 
rdd2 = rdd1.flatMap(lambda x: x.split(",")).map(lambda x: (x,1)).reduceByKey(lambda x,y:x+y,8).sortByKey(ascending=False).take(5) 

Spark job execution screenshot

つ以上の観察、ジョブは、新しいジョブの作成を引き起こしているものを、(それらのいくつかはスキップされ)新たなステージを持っているようです。

+0

それはあなたが非常に多くのスパークジョブを参照してくださいpysparkだから? –

答えて

0

sortByKeyは技術的には変わっています(遅延評価する必要があります)が、実装には熱心なアクションが必要です。そのため、 sortByKeyにジョブを加えて、takeのジョブを見ています。

2つのジョブが表示されます。第3のジョブがどこから来ているのかわかりません。

(スキップされたステージは、シャッフルの結果が自動的にキャッシュされるステージです。これは、Spark 1.3以降に存在していた最適化です)。 sortByKeyの内部に

さらに情報 - おそらく、Why does sortBy transformation trigger a Spark job?

関連する問題