在逻辑计划中行首的星号符号的含义是什么?
见下面的例子:
| == Physical Plan ==
*(2) HashAggregate(keys=[k#33], functions=[sum(cast(v#34 as bigint))])
+- Exchange hashpartitioning(k#33, 200), true, [id=#59]
+- *(1) HashAggregate(keys=[k#33], functions=[partial_sum(cast(v#34 as bigint))])
+- *(1) LocalTableScan [k#33, v#34] |我记得它与正在优化的操作有关,但是在文档中找不到有用的东西,除了“优化”之外,也不知道更多的细节。
发布于 2020-12-07 09:15:27
编辑:
最后找到了一个在线源,它记录了逻辑计划中星星的含义:
“物理计划中受整个阶段代码生成优化的步骤,以星号作为前缀,后面跟着代码生成id,例如:‘*(1)LocalTableScan’。”

继续我的研究离线,并发现了一些有价值的提示火花开发商培训材料,从霍顿工厂和书“学习火花,第二版”。
带有星号(*)的操作使用全阶段代码Gen.
而整个阶段的代码生成被描述为
物理查询优化阶段,将整个查询折叠成一个函数,消除虚拟函数调用,并对中间数据使用CPU寄存器。
在数据库文章Apache作为编译器:以每秒10亿行的速度在笔记本上连接中对整个阶段代码Gen作了全面的介绍,其中说:
“目标是利用整个阶段的代码生成,以便引擎能够实现手写代码的性能,同时提供通用引擎的功能。与其在运行时依赖操作符来处理数据,这些操作符一起在运行时生成代码,并在可能的情况下将查询的每个片段折叠成一个函数,然后执行生成的代码。”
https://stackoverflow.com/questions/65173526
复制相似问题