这个问题在这里已经有答案了:
在sparksql中编写sql与使用dataframeapi(4个答案)两个月前关门了。用dataframeapi格式编写代码而不是spark.sql查询有什么显著的优势吗?想知道catalyst optimizer是否也会处理spark.sql查询。
b1payxdu1#
您的Dataframe转换和sparksql查询将被转换为执行计划,catalyst将对其进行优化。dataframe api的主要优点是可以使用dataframe optimize功能,例如: cache() ,一般来说,你将有更多的执行计划的控制。我觉得测试你的代码更容易,人们往往会写一个巨大的查询。。。
cache()
jv4diomz2#
spark sql、scala dataframe和pyspark dataframe api的优化器是相同的。
ikfrs5lh3#
无论您是使用dataframeapi还是sparksqlapi编写代码,在性能方面都没有显著差异,因为dataframeapi和sparksqlapi都是rdd(弹性分布式数据集)之上的抽象。catalyst optimizer优化结构化查询(用sql或dataframe/dataset API表示),这可以减少程序的运行时间并节省成本。为了回答您的问题,catalyst optimizer同时适用于spark sql和dataframe/dataset API。如果您想更详细地了解内部代码以及它是如何工作的,您可以查看这篇详细解释它的文章。https://unraveldata.com/resources/catalyst-analyst-a-deep-dive-into-sparks-optimizer/
3条答案
按热度按时间b1payxdu1#
您的Dataframe转换和sparksql查询将被转换为执行计划,catalyst将对其进行优化。
dataframe api的主要优点是可以使用dataframe optimize功能,例如:
cache()
,一般来说,你将有更多的执行计划的控制。我觉得测试你的代码更容易,人们往往会写一个巨大的查询。。。
jv4diomz2#
spark sql、scala dataframe和pyspark dataframe api的优化器是相同的。
ikfrs5lh3#
无论您是使用dataframeapi还是sparksqlapi编写代码,在性能方面都没有显著差异,因为dataframeapi和sparksqlapi都是rdd(弹性分布式数据集)之上的抽象。
catalyst optimizer优化结构化查询(用sql或dataframe/dataset API表示),这可以减少程序的运行时间并节省成本。
为了回答您的问题,catalyst optimizer同时适用于spark sql和dataframe/dataset API。
如果您想更详细地了解内部代码以及它是如何工作的,您可以查看这篇详细解释它的文章。
https://unraveldata.com/resources/catalyst-analyst-a-deep-dive-into-sparks-optimizer/