为什么重用SparkContext可以提高查询速度

时间:2016-01-11 17:37:30

标签: apache-spark

在我的spark工作中,我创建了一个SparkContext,通过Parquet文件加载我的数据,然后使用spark sql来处理它们。当我打开一个火花壳时,我第一次运行查询需要很长时间,在我的情况下大约200秒。然后我保持火花壳打开,并运行相同的查询,同样的数据集上的其他一些不同的查询,它只需要20-30秒〜,它大致提高了10倍的性能。

有人可以给我详细解释吗?一个spark shell是否继续使用一个SparkContext?如果是这样的话,那么如何重复使用SparkContext会让事情变得如此之快。

1 个答案:

答案 0 :(得分:2)

答案是Spark在上下文打开时将中间文件存储在本地磁盘上。存储中间文件后,Spark可以对本地磁盘上的文件进行本地读取,而不是从HDFS读取。

您可以通过打开Spark UI并导航到DAG计划来验证这一点。你会看到你的一些阶段是灰色的,有些是蓝色的。灰色的应该说跳过了阶段。这意味着该阶段的数据已经可用。