2016-11-28 2 views
5

私は私がいた私は、「ThreadPoolExecutor.java:1142で実行する」の説明といくつかのジョブがあることがわかり、スパークUIを見てみるとスパークSQL 1.6.1 を使用してWeb UIのThreadPoolExecutorsジョブとは何ですか?

Example of some of these jobs

をいくつかのスパークジョブを実行していますよなぜいくつかの仕事はその説明を取得するのだろうか?

+0

あなたは 'join'sをやっていますか? –

+0

あなたの質問を書いたときに、私はコンピュータの近くにいなかった。 Spark SQLを使用していて、結合を実行しています – Gideon

+0

実行した結合を共有できますか? SQLタブを見て、スパークジョブをクエリに関連付けます。あなたの質問からの質問は何ですか?なぜ私たちがなぜWeb UIで 'TPE'を走らせるのかを説明できるだけの十分な知識があると信じているだけです。私たちはいませんか? –

答えて

5

調査の結果、がThreadPoolExecutor.java:1142で実行されていることがわかりました。スパークジョブは、joinオペレータのクエリに関連しています。あなたはSQL]タブに切り替えると

scala> spark.version 
res16: String = 2.1.0-SNAPSHOT 

scala> val left = spark.range(1) 
left: org.apache.spark.sql.Dataset[Long] = [id: bigint] 

scala> val right = spark.range(1) 
right: org.apache.spark.sql.Dataset[Long] = [id: bigint] 

scala> left.join(right, Seq("id")).show 
+---+ 
| id| 
+---+ 
| 0| 
+---+ 

あなたは完了クエリセクションを参照してくださいする必要があり、そのジョブズ(右側)。私の場合は

SQL tab in web UI with Completed Queries

スパークジョブ(複数可)のID 12および16

Jobs tab in web UI with "run at ThreadPoolExecutor.java:1142" jobs

は、彼らの両方がjoin問い合わせに対応し、 "ThreadPoolExecutor.java:1142で実行" で実行されています。

「私の結合の1つがこのジョブを表示させているのは間違いありませんが、ジョインがシャッフル変換でありアクションではないことがわかっている限り、なぜジョブはThreadPoolExecutorで記述され、

Spark SQLは、Sparkの拡張であり、それ自体の抽象化(Dataset)は、その名前を付けるだけです。すぐに心に湧いてくる)。 1つの「シンプルな」SQL操作で、1つ以上のSparkジョブを実行できます。 Spark SQLの実行エンジンの裁量で、実行または送信するスパークジョブの数(ただし、カバーの下でRDDを使用しています) - このような低レベルの詳細はわかりません。 Spool SQLのSQLやQuery DSLを使用することで、あなたは非常に高いレベルになっています。

関連する問題