[jira] [Created] (FLINK-11715) Add optimize program to organize optimization phases

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (FLINK-11715) Add optimize program to organize optimization phases

Shang Yuanchun (Jira)
godfrey he created FLINK-11715:
----------------------------------

             Summary: Add optimize program to organize optimization phases
                 Key: FLINK-11715
                 URL: https://issues.apache.org/jira/browse/FLINK-11715
             Project: Flink
          Issue Type: New Feature
          Components: Table API & SQL
            Reporter: godfrey he
            Assignee: godfrey he


Currently, Flink organizes the optimization phases by different methods in Batch(Stream)TableEnvironment#optimize. However this is not easy to extend especially there are more than ten optimization stages in Blink. On the other hand, the methods are very similar, except the match order and rule sets for hep optimization phases, target traits and rule sets for volcano optimization phases.

Abstracts each optimization stage into a {{FlinkOptimizeProgram}} in Blink, defined as following:
{code}
/**
  * Likes [[org.apache.calcite.tools.Program]], FlinkOptimizeProgram transforms a relational
  * expression into another relational expression.
  */
trait FlinkOptimizeProgram[OC <: OptimizeContext] {
  def optimize(input: RelNode, context: OC): RelNode
}
{code}
{{FlinkOptimizeProgram}}'s subclasses include
 1. {{FlinkRuleSetProgram}}, an abstract program can add/remove RuleSet, set target traits.
 2. {{FlinkHepRuleSetProgram}}, a subclass of {{FlinkRuleSetProgram}} which runs with HepPlanner.
 3. {{FlinkVolcanoProgram}}, a subclass of {{FlinkRuleSetProgram}} which runs with VolcanoPlanner.
 4. {{FlinkGroupProgram}}, a program contains a sequence of sub-programs as a group, programs in the group will be executed in sequence, and the group can be executed `iterations` times.
 and so on

{{FlinkChainedPrograms}} is responsible for organizing all the programs, each program's optimize method will be called in sequence when {{FlinkChainedPrograms}}#optimize is called



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)