planAggregateWithOneDistinct(
groupingExpressions: Seq[NamedExpression],
functionsWithDistinct: Seq[AggregateExpression],
functionsWithoutDistinct: Seq[AggregateExpression],
resultExpressions: Seq[NamedExpression],
child: SparkPlan): Seq[SparkPlan]
AggUtils Helper Object
AggUtils
is a Scala object that defines the methods used exclusively when Aggregation execution planning strategy is executed.
planAggregateWithOneDistinct
Method
planAggregateWithOneDistinct
…FIXME
Note
|
planAggregateWithOneDistinct is used exclusively when Aggregation execution planning strategy is executed.
|
Creating Physical Plan with Two Aggregate Physical Operators for Partial and Final Aggregations — planAggregateWithoutDistinct
Method
planAggregateWithoutDistinct(
groupingExpressions: Seq[NamedExpression],
aggregateExpressions: Seq[AggregateExpression],
resultExpressions: Seq[NamedExpression],
child: SparkPlan): Seq[SparkPlan]
planAggregateWithoutDistinct
is a two-step physical operator generator.
planAggregateWithoutDistinct
first creates an aggregate physical operator with aggregateExpressions
in Partial
mode (for partial aggregations).
Note
|
requiredChildDistributionExpressions for the aggregate physical operator for partial aggregation "stage" is empty.
|
In the end, planAggregateWithoutDistinct
creates another aggregate physical operator (of the same type as before), but aggregateExpressions
are now in Final
mode (for final aggregations). The aggregate physical operator becomes the parent of the first aggregate operator.
Note
|
requiredChildDistributionExpressions for the parent aggregate physical operator for final aggregation "stage" are the attributes of groupingExpressions .
|
Creating Aggregate Physical Operator — createAggregate
Internal Method
createAggregate(
requiredChildDistributionExpressions: Option[Seq[Expression]] = None,
groupingExpressions: Seq[NamedExpression] = Nil,
aggregateExpressions: Seq[AggregateExpression] = Nil,
aggregateAttributes: Seq[Attribute] = Nil,
initialInputBufferOffset: Int = 0,
resultExpressions: Seq[NamedExpression] = Nil,
child: SparkPlan): SparkPlan
createAggregate
creates a physical operator given the input aggregateExpressions
aggregate expressions.
Aggregate Physical Operator | Selection Criteria |
---|---|
|
|
|
|
When all the above requirements could not be met. |
Note
|
createAggregate is used when AggUtils is requested to planAggregateWithoutDistinct, planAggregateWithOneDistinct (and planStreamingAggregation for Spark Structured Streaming)
|