Spark-源码学习-SparkSQL-架构设计-SQL 引擎-Optimizer 模块-Rule-V2ScanRelationPushDown
一、概述
二、实现
1 | def apply(plan: LogicalPlan): LogicalPlan = { |
2.1. createScanBuilder()
$createScanBuilder()$ 方法对 DataSourceV2Relation 类型转换为 ScanBuilderHolder,后续的 $pushDownFilters()$ 、$pushDownAggregates()$ 规则则是基于 ScanBuilderHolder 来进行转换
如果有遇到 ScanBuilderHolder 类型才会进行 DataSource V2 特有的规则转换~
所以DataSourceV2Relation是从哪里来的是关键~🤔️?
在 RULE ResolveRelations 中会进行 UnresolvedRelation 到 DataSourceV2Relation 或是 UnresolvedCatalogRelation 的转换:
1 | private def createScanBuilder(plan: LogicalPlan) = plan.transform { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker!
评论
ValineTwikoo