微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据帧 API 与 Spark.sql

如何解决数据帧 API 与 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 编写代码,在性能方面都没有显着差异,因为 dataframe api 和 spark sql api 都是 RDD(弹性分布式数据集)之上的抽象。

Catalyst Optimizer 优化了结构化查询——用 SQL 或通过 DataFrame/Dataset API 表达——这可以减少程序的运行时间并节省成本。

为了回答您的问题,Catalyst Optimizer 适用于 Spark sql 以及 Dataframe/Dataset Apis。

如果您想更详细地了解内部及其工作原理,可以查看这篇文章,其中详细解释了它。

https://unraveldata.com/resources/catalyst-analyst-a-deep-dive-into-sparks-optimizer/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。