没有合适的资源?快使用搜索试试~ 我知道了~
首页SparkSQL物理执行计划各操作实现
SparkSQL物理执行计划各操作实现
559 浏览量
更新于2023-05-27
评论
收藏 369KB PDF 举报
Catalyst作为一个实现无关的查询优化框架,在优化后的逻辑执行计划到真正的物理执行计划这部分只提供了接口,没有提供像Analyzer和Optimizer那样的实现。本文介绍的是SparkSQL组件各个物理执行计划的操作实现。把优化后的逻辑执行计划映射到物理执行操作类这部分由SparkStrategies类实现,内部基于Catalyst提供的Strategy接口,实现了一些策略,用于分辨logicalPlan子类并替换为合适的SparkPlan子类。SparkPlan继承体系如下。接下里会具体介绍其子类的实现。主要三部分:LeafNode、UnaryNode、BinaryNode各自的实现类
资源详情
资源评论
资源推荐

SparkSQL物理执行计划各操作实现物理执行计划各操作实现
SparkStrategy: logical to physical
Catalyst作为一个实现无关的查询优化框架,在优化后的逻辑执行计划到真正的物理执行计划这部分只提供了接口,没有提供
像Analyzer和Optimizer那样的实现。
本文介绍的是Spark SQL组件各个物理执行计划的操作实现。把优化后的逻辑执行计划映射到物理执行操作类这部分由
SparkStrategies类实现,内部基于Catalyst提供的Strategy接口,实现了一些策略,用于分辨logicalPlan子类并替换为合适的
SparkPlan子类。
SparkPlan继承体系如下。接下里会具体介绍其子类的实现。
SparkPlan
主要三部分:LeafNode、UnaryNode、BinaryNode
各自的实现类:
提供四个需要子类重载的方法
// TODO: Move to `DistributedPlan`
/** Specifies how data is partitioned across different nodes in the cluster. */
def outputPartitioning: Partitioning = UnknownPartitioning(0) // TODO: WRONG WIDTH!
/** Specifies any partition requirements on the input data for this operator. */
def requiredChildDistribution: Seq[Distribution] =
Seq.fill(children.size)(UnspecifiedDistribution)
def execute(): RDD[Row]
def executeCollect(): Array[Row] = execute().collect()
Distribution和Partitioning类用于表示数据分布情况。有以下几类,可以望文生义。



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0