为了进行比较,假设我们有一张表" T"有两列" A"," B"。我们还在一些HDFS数据库中运行了一个hiveContext。我们制作了一个数据框:
理论上,以下哪一项更快:
sqlContext.sql("SELECT A,SUM(B) FROM T GROUP BY A")
或
df.groupBy("A").sum("B")
其中" df"是一个引用T的数据框。对于这些简单的聚合操作,有没有理由为什么一个方法应该优先于另一个?
答案 0 :(得分:5)
不,这些应该归结为相同的执行计划。 Spark SQL引擎下面使用了相同的优化引擎,催化剂优化器。您可以通过查看spark UI,或者甚至在结果DataFrame上调用explain
来自行检查。
答案 1 :(得分:4)
Spark开发人员已经做出了很大的优化。 DataFrame Scala和DataFrame SQL之间的性能无法区分。即使对于DataFrame Python,不同的是将数据收集到驱动程序时。
它打开了一个新世界
It doesn't have to be one vs. another
我们可以选择适合自己的方式
databricks发布的效果比较