spark-sql 与 spark-shell REPL 中的 Spark SQL 性能差异

wrs*_*der 5 apache-spark

Spark newb 问题:我spark-sqlspark-shell. 该spark-shell版本大约需要10秒,而spark-sql版本大约需要20。

spark-sql REPL 直接获取查询:

spark-sql> SELECT .... FROM .... LIMIT 20
Run Code Online (Sandbox Code Playgroud)

spark-shell REPL 命令是这样的:

scala> val df = sqlContext.sql("SELECT ... FROM ... LIMIT 20 ") 
scala> df.show()
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,它是完全相同的查询。此外,由于显式LIMIT 20.

从不同的 CLI 执行相同查询的方式有何不同?

如果有帮助,我正在 Hortonworks 沙箱 VM (Linux CentOS) 上运行。

Mou*_*oud 0

我认为更多的是两个部分,

  1. 首先,它可能与顺序有关。如果您运行 Spark-sql 第一个 Spark 将能够从头开始构建解释计划。但是如果您再次运行相同的查询。它可能比 shell 或 sql 中的第一个要少,因为解释计划很容易检索

  2. 其次,它可能与 Spark-SQL 转换为资源排序有关。这种事发生过多次。Spark-shell比spark-sql更快地获取资源并启动进程。您可以从 UI 中检查这一点,或者top您会发现 Spark-Shell 的实际启动比 Spark-sql 更快。