Apache Spark 自定义优化规则:Custom Optimizer Rule
在 《Apache Spark 自定义优化规则:Custom Strategy》 文章中我们介绍了如何自定义策略,策略是用在逻辑计划转换到物理计划阶段。而本文将介绍如何自定义逻辑计划优化规则,主要用于优化逻辑计划,和前文不一样的地方是,逻辑优化规则只是等价变换逻辑计划,也就是 Logic Plan -> Login Plan,这个是在应用策略前进行的。 如果想及时了解 Spark 、Hadoop或者HBase相关的文章,欢迎关注微信公众号: iteblog_hadoop 假设我们有以下计算逻辑: val df = spark.range(10).toDF("counts") val iteblogDF = df.selectExpr("1 * counts ") println(iteblogDF.queryExecution.optimizedPlan.numberedTreeString) 我们有一张表,里面只有名为 counts 的一列,我们对表的每行都乘以 1,现在我们使用 iteblogDF.queryExecution.optimizedPlan.numberedTreeString 来看下上面表达式的优化之后的逻辑计划: 00 Project [(1 * id#0L) AS (1 * counts)#4L] 01 +- Range (0, 10, step=1,