如何解决如何在提交火花之前触发催化剂优化器以减少执行时间?
我正在工作的组织正在从其旧的传统执行方式迁移到公共云。我们必须为在云上执行的所有执行支付费用。为了降低执行成本,我们正在做两件事:
- 我们正在努力避免所有不良执行。
- 我们正在尝试进一步减少执行时间。
作为一名大数据工程师,我的工作主要依赖于SparkSQL,我正在尝试减少SQL查询的执行时间。我想在执行之前先执行一下催化剂。用于解释逻辑计划,优化逻辑计划和生成物理计划等。 我还想在催化剂中添加我的自定义优化计划,该计划也将在构建时触发。
在执行之前,有什么办法做所有这些事情吗?
解决方法
您实际上可以通过创建数据框而不执行任何操作来获取查询的执行计划。
假设您有一个数据框df
,则可以访问df.logicalPlan
并遍历整个计划。如果您有某种启发式方法可以检测到这种情况,那么这可能会满足您避免执行不良的第一个要求。
对于自定义优化,您可以添加自己的优化规则(请参见https://www.waitingforcode.com/apache-spark-sql/introduction-custom-optimization-apache-spark-sql/read)。 这不是在构建时触发,而是在执行时触发(像所有催化剂优化一样)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。