哪个更快? 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 中使用过滤器的主要内容,如果未能解决你的问题,请参考以下文章
Hive with Hadoop vs Hive with spark vs spark sql vs HDFS - 它们如何相互协作?