开发者社区> 问答> 正文

FlinkSQL源码分段优化中,物理计划转换为ExecNodeGraph的时候,SameRelObj



首先执行:SameRelObjectShuttle Rewrite same rel object to different rel objects.
e.g.
      Join                       Join
     /    \                     /    \
 Filter1 Filter2     =>     Filter1 Filter2
     \   /                     |      |
      Scan                  Scan1    Scan2



然后执行:SubplanReuseShuttle
       Join                      Join
     /      \                  /      \
 Filter1  Filter2          Filter1  Filter2
    |        |        =>       \     /
 Project1 Project2            Project1
    |        |                      |
  Scan1    Scan2             Scan1

val shuttle = new SameRelObjectShuttle()
val relsWithoutSameObj = optimizedRelNodes.map(_.accept(shuttle))
// reuse subplan
val reusedPlan = SubplanReuser.reuseDuplicatedSubplan(relsWithoutSameObj, config)
// convert FlinkPhysicalRel DAG to ExecNodeGraph
val generator = new ExecNodeGraphGenerator()
目的是啥,谢谢回复。*来自志愿者整理的flink邮件归档

展开
收起
moonlightdisco 2021-12-07 16:36:41 780 0
1 条回答
写回答
取消 提交回答
  • Hi!

    这是因为我们有配置关闭 subplan reuse 和 source reuse,因此需要先把 plan 拆开,然后再判断是否允许 reuse,如果允许才能合并。*来自志愿者整理的flink邮件归档

    2021-12-07 17:06:26
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Phoenix 全局索引原理与实践 立即下载
Flink中的两类新型状态存储 立即下载
HBase2.0重新定义小对象实时存取 立即下载