我想知道爲什麼我在Zepplin段落中編寫的點火作業執行速度比運行spark-submit自己快嗎?Apache zepplin的點火作業運行速度比spark-submit
我基本上在Zepplin和spark-submit中使用相同的配置(executors,memory),但是執行時間差別很大。
兩者都在同一個獨立的Spark集羣上運行。
什麼能解釋這種差異?
我想知道爲什麼我在Zepplin段落中編寫的點火作業執行速度比運行spark-submit自己快嗎?Apache zepplin的點火作業運行速度比spark-submit
我基本上在Zepplin和spark-submit中使用相同的配置(executors,memory),但是執行時間差別很大。
兩者都在同一個獨立的Spark集羣上運行。
什麼能解釋這種差異?
我能想到的兩件事可能會導致這種情況。
即使您的計時打折火花上下文(例如,您只計算實際工作的時間),但在zappelin中,您可能會在當前工作之前執行一些其他工作。這些可能會導致發生各種緩存。一些例子包括:因爲你在先前的小區讀取它們
是的,我幾乎想到了所有這些可能性,但它並不能解釋爲什麼寫入db(大約1.48億條記錄)所花的時間比在spark-submit中運行的時間少得多。相同的代碼,但在Zepplin中作爲不同的段落編寫。我可以看到Spark UI中每個任務需要多長時間。 –
當您執行分析時,可以確保在分析之外加載每個外部元素。例如,在你的程序中調用spark.range(100).show()來加載spark上下文,然後在作業本身中包裝一個計時器。另一方面,在zepplin中,確保只運行相關的單元格,然後再進行比較。鑑於此,你應該看到相同的性能。我假設你正在使用相同的配置進行兩種測試。 –
工作的代碼是什麼? –
@T.Gawęda我不認爲這是代碼,這可能是因爲我正在使用zepplin spark context(sc),sqlContext可能與我的spark conf有所不同 –
您是否考慮了啓動/關閉時間?我想Zeppelin實例已經在運行,所以沒有啓動時間。如果您還沒有嘗試過使用內部Scala時序 –