我想知道为什么我在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时序 –