哪个更快? Spark SQL with Where 子句或在 Spark SQL 之后在 Dataframe 中使用过滤器

Posted

技术标签:

【中文标题】哪个更快? Spark SQL with Where 子句或在 Spark SQL 之后在 Dataframe 中使用过滤器【英文标题】:Which One is faster? Spark SQL with Where clause or Use of Filter in Dataframe after Spark SQL 【发布时间】:2016-11-07 12:38:30 【问题描述】:

哪个更快? Spark SQL 使用 Where 子句还是在 Spark SQL 之后在 Dataframe 中使用过滤器?

Like Select col1, col2 from tab 1 where col1=val;

或者

dataframe df=sqlContext.sql(Select col1, col2 from tab 1);

df.filter("Col1=Val");

【问题讨论】:

【参考方案1】:

使用explain 方法查看物理计划是确定性能的好方法。

例如,Zeppelin 教程笔记本。

sqlContext.sql("select age, job from bank").filter("age = 30").explain

还有

sqlContext.sql("select age, job from bank where age = 30").explain

具有完全相同的物理计划。

== Physical Plan ==
Project [age#5,job#6]
+- Filter (age#5 = 30)
   +- Scan ExistingRDD[age#5,job#6,marital#7,education#8,balance#9]

所以性能应该是一样的。

虽然我认为select age, job from bank where age = 30 在这种情况下更具可读性。

【讨论】:

以上是关于哪个更快? Spark SQL with Where 子句或在 Spark SQL 之后在 Dataframe 中使用过滤器的主要内容,如果未能解决你的问题,请参考以下文章

哪个 SQL 查询更快,为啥?

哪个sql查询更快?

Hive with Hadoop vs Hive with spark vs spark sql vs HDFS - 它们如何相互协作?

插入、更新或删除 MongoDB 或 SQL 哪个更快?

在 Spark 中执行以“WITH”关键字开头的 SQL 语句

SPARK SQL中 CTE(with表达式)会影响性能么?