2016-12-27 22 views
0

我想知道爲什麼我在Zepplin段落中編寫的點火作業執行速度比運行spark-submit自己快嗎?Apache zepplin的點火作業運行速度比spark-submit

我基本上在Zepplin和spark-submit中使用相同的配置(executors,memory),但是執行時間差別很大。

兩者都在同一個獨立的Spark集羣上運行。

什麼能解釋這種差異?

+1

工作的代碼是什麼? –

+0

@T.Gawęda我不認爲這是代碼,這可能是因爲我正在使用zepplin spark context(sc),sqlContext可能與我的spark conf有所不同 –

+1

您是否考慮了啓動/關閉時間?我想Zeppelin實例已經在運行,所以沒有啓動時間。如果您還沒有嘗試過使用內部Scala時序 –

回答

1

我能想到的兩件事可能會導致這種情況。

  1. 當使用zappelin時,您已經有了一個可能正在使用的spark上下文。當你做一個火花提交你創建一個需要一些時間的新的。
  2. 即使您的計時打折火花上下文(例如,您只計算實際工作的時間),但在zappelin中,您可能會在當前工作之前執行一些其他工作。這些可能會導致發生各種緩存。一些例子包括:因爲你在先前的小區讀取它們

    • 的OS/Hadoop的可能緩存你正在閱讀的文件
    • 你可能會做一個洗牌你一些RDD所以它被緩存以前那樣
    • 你可能有一個明確的緩存
    • 你可能有你正在使用的捧場已經在先前的小區
    • 不勝枚舉正確分區的數據幀...
+0

是的,我幾乎想到了所有這些可能性,但它並不能解釋爲什麼寫入db(大約1.48億條記錄)所花的時間比在spark-submit中運行的時間少得多。相同的代碼,但在Zepplin中作爲不同的段落編寫。我可以看到Spark UI中每個任務需要多長時間。 –

+0

當您執行分析時,可以確保在分析之外加載每個外部元素。例如,在你的程序中調用spark.range(100).show()來加載spark上下文,然後在作業本身中包裝一個計時器。另一方面,在zepplin中,確保只運行相關的單元格,然後再進行比較。鑑於此,你應該看到相同的性能。我假設你正在使用相同的配置進行兩種測試。 –

相關問題