数据框 API 与 Spark.sql

Dataframe API vs Spark.sql

以 Dataframe API 格式而不是 Spark.sql 查询格式编写代码是否有任何显着优势?

想知道 Catalyst 优化器是否也可以处理 spark.sql 查询。

您的数据帧转换和 spark sql 查询无论如何都会被转换为执行计划,Catalyst 会对其进行优化。

dataframe api 的主要优点是您可以使用 dataframe 优化功能,例如:cache(),通常您可以更好地控制执行计划。

我觉得测试您的代码也更容易,人们倾向于编写 1 个巨大的查询...

Spark SQL、Scala Dataframe 和 PySpark Dataframe api 的优化器相同。

无论您使用 DataFrame API 还是 Spark Sql API 编写代码,在性能方面都没有显着差异,因为数据帧 api 和 spark sql api 是 RDD(弹性分布式数据集)之上的抽象。

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/