Spark newb 问题:我spark-sql在spark-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) 上运行。
我认为更多的是两个部分,
首先,它可能与顺序有关。如果您运行 Spark-sql 第一个 Spark 将能够从头开始构建解释计划。但是如果您再次运行相同的查询。它可能比 shell 或 sql 中的第一个要少,因为解释计划很容易检索
其次,它可能与 Spark-SQL 转换为资源排序有关。这种事发生过多次。Spark-shell比spark-sql更快地获取资源并启动进程。您可以从 UI 中检查这一点,或者top您会发现 Spark-Shell 的实际启动比 Spark-sql 更快。