2016-12-27 14 views
0

私がZepplinの段落で書いたスパークジョブがspark-submitを実行するよりもずっと速く実行する理由があるのだろうか?Apache zepplinスパークジョブがspark-submitよりも速く実行する

私は基本的にZepplinとspark-submitで同じ設定(エグゼキュータ、メモリ)を使用しますが、実行時間に大きな違いがあります。

どちらも同じスタンドアロンスパーククラスタで実行されています。

この違いを説明するにはどうすればよいですか?

+1

職種は何ですか? –

+0

@T.Gawęda私はそれがコードだとは思わない、それはおそらく、私のスパークのconfと異なるかもしれないzepplin spark context(sc)、sqlContextを使用しているからです –

+1

あなたはスタートアップ/シャットダウン時間を考慮していますか? Zeppelinのインスタンスが既に起動しているので起動時間がないと思います。 Scalaの内部タイミング –

答えて

1

これが原因と思われる2つのことが考えられます。

  1. zappelinを使用している場合は、すでに使用しているスパークコンテキストがあります。 spark-submitを実行すると、新しいものを作成して時間がかかります。
  2. あなたのタイミングがスパークコンテキストを割り引いても(実際の仕事の時間だけをカウントするなど)、zappelinではおそらく現在の仕事の前に他の仕事をするでしょう。これらにより、さまざまなキャッシングが発生する可能性があります。いくつかの例が含まれます:あなたが前のセルにそれらを読んでいるので

    • OS/Hadoopのは、あなたが読んでいるファイルをキャッシュ可能性がある
    • は、あなたはそれがキャッシュされているいくつかのRDDに以前とシャッフルをしている可能性があります
    • あなたは...あなたはすでに前のセルのリストが進む
    • に正しくパーティションた結合に使用しているデータフレームを持っているかもしれない明示的にキャッシュ
    • がある可能性があります
+0

Yeaをまだ試していないのであれば、ほとんどすべての可能性について考えましたが、spark-submitで実行するよりもdb(約148millionレコード)の書き込み時間が大幅に短くなった理由は説明しません。同じコードですが、Zepplinでは別の段落として書かれています。 Spark UIで各タスクがどれくらい時間がかかるかを知ることができました。 –

+0

プロファイリングを行うときに、プロファイリング外のすべての外部要素をロードすることを確認できます。たとえば、あなたのプログラムコールspark.range(100).show()は、sparkコンテキストをロードしてから、ジョブ自体の周りにタイマーをラップします。一方、ゼップリンでは、関連するセルのみを実行し、それ以外は実行しないでください。これを考えると、同じパフォーマンスが見られるはずです。もちろん、両方のテストで同じ設定を使用しているとします。 –

関連する問題