2017-06-06 5 views
2

私はSpark 2.1.0を使用しています。1つのアクションで2つのジョブが生成されるのはなぜですか?

なぜ次の1つのアクションが2つの同一のジョブ(それぞれ同じDAG)を生成するのですか?それはちょうど1を生み出すべきではないか?ここにコードがあります:

val path = "/usr/lib/spark/examples/src/main/resources/people.txt" 
val peopleDF = spark. 
    sparkContext. 
    textFile(path, 4). 
    map(_.split(",")). 
    map(attr => Person(attr(0), attr(1).trim.toInt)). 
    toDF 
peopleDF.show() 

私はそれが何が起こっているかを確認する際にグラフィックインターフェイスで参照してください?私はそれがすべてのデータフレーム変換と関係があると思います。

+0

スパークのバージョンは何ですか? SQLクエリのスクリーンショットを添付したり、ジョブから添付することはできますか? –

+0

Spark 2.1.0の使用。 "SQLクエリとジョブから"どこで見つけることができますか? GUIでは、単にジョブ、ステージ、タスクを参照してください。ところで、履歴サーバーを使用しています。 – Juani

+0

ヒストリサーバはSparkアプリケーションの実行後Web UIを提供する必要があります。Sparkアプリケーションを選択すると、ジョブとステージの横にSQLタブが表示されます。これはデフォルトで有効になっています。クラスタマネージャとは何ですか?糸? –

答えて

2

一般的に、単一のSQLクエリでこの特定のケースで複数のSparkジョブが発生する可能性があります。Spark 2.3.0-SNAPSHOTは1つしか表示しません。

enter image description here

仕事12は、また、すなわち、ただ一段無シャッフルスパークジョブかなりいいです。 (SQLまたはデータセットAPIを使用して)スパークSQLの構造化されたクエリごとに複数のスパークジョブを参照するには

enter image description here

理由は、スパークSQLはRDDSの上に、高レベルのAPIを提供し、あなたを作るために自由にRDDSとアクションを使用していますSpark開発者としての人生とSparkパフォーマンスチューニングのエキスパートが簡単になりました。ほとんどの場合(特にアブストラクションを作成する場合)、同等のパフォーマンスを達成するためにSparkジョブを自分で起動する必要があります。

+1

この段階は、私が見ているものと同じですが、私のスタンドアロンのSparkクラスタでは2つのジョブがあります。しかし、あなたはすでに理由を説明しました。 Jacek、私の場合、私は専門家になる前にまだまだ時間がかかります。どうもありがとう。 – Juani

関連する問題