Spark的Catalyst Optimizer如何在不执行代码的情况下进行优化?

问题描述 投票:0回答:1

我正在尝试查找有关 Spark Catalyst 优化器如何详细工作的具体文档,因为我计划以一种专门为减少资源使用而不是计算时间而定制的方式对其进行自定义。

我确实了解它的作用以及它的使用方式,但我想知道的是优化器如何在不执行代码的情况下进行优化?它使用人工智能模型吗?是暴力计算吗?

apache-spark apache-spark-sql query-optimization
1个回答
0
投票

如果您一般询问优化器,那么有许多有用的搜索结果可以解释这一点(例如phasesexperimental extensions),可以在找到一些非常具体的自定义规则以及使用SparkExtension 注册它们以供一般用途。

质量自定义规则让 Spark 知道可以通过首先转换 uuid(与行 id 类似)来搜索通过连接两个长整型创建的 uuid 字符串,从而加快计算速度。 这会停止表扫描并允许谓词下推。

那些不需要运行查询,只需要查询结构本身,与谓词下推等相同。选择的确切阶段取决于内置计划已经执行的优化级别,上面的自定义阶段发生在谓词下推逻辑执行之前放置,以便其结果可以被下推。

AQE 需要运行请参阅此处

您“计划”执行的优化将取决于您需要做什么。 不过,我建议您认真考虑一下付出的努力是否值得。

© www.soinside.com 2019 - 2024. All rights reserved.