2016-12-27 23 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中,确保只运行相关的单元格,然后再进行比较。鉴于此,你应该看到相同的性能。我假设你正在使用相同的配置进行两种测试。 –

相关问题