这个问题在这里已经有答案了:
在Spark SQL中编写SQL与使用Dataframe API(4个答案)
4天前就关门了。
用Dataframe API格式而不是Spark.sql查询编写代码有什么显著的优势吗?
我想知道催化剂优化器是否也会对spark.sql查询起作用。
发布于 2021-02-25 07:32:37
您的数据帧转换和spark sql查询将被转换为执行计划,Catalyst将对其进行优化。
dataframe api的主要优点是您可以使用dataframe优化函数,例如:cache(),一般情况下,您将对执行计划有更多的控制。
我觉得测试你的代码也更容易,人们倾向于写一个巨大的查询……
发布于 2021-02-25 10:31:27
Spark SQL、Scala Dataframe和PySpark Dataframe apis的优化器是相同的。
发布于 2021-02-25 14:36:48
无论您是使用RDD API还是Spark Sql API编写代码,在性能方面都没有显著差异,因为DataFrame api和spark sql api都是dataframe (弹性分布式数据集)之上的抽象。
Catalyst Optimizer优化结构化查询-以SQL表示,或通过DataFrame/Dataset APIs这可以减少程序的运行时间并节省成本。
为了回答你的问题,Catalyst Optimizer可以在Spark sql和Dataframe/Dataset Apis上工作。
如果你想更详细地了解内部机制以及它是如何工作的,你可以查看这篇详细解释它的文章。
https://unraveldata.com/resources/catalyst-analyst-a-deep-dive-into-sparks-optimizer/
https://stackoverflow.com/questions/66356293
复制相似问题