org.apache.spark.sql.catalyst

optimizer

package optimizer

Visibility
  1. Public
  2. All

Type Members

  1. abstract class Optimizer extends RuleExecutor[LogicalPlan]

Value Members

  1. object BooleanSimplification extends Rule[LogicalPlan]

    Simplifies boolean expressions where the answer can be determined without evaluating both sides.

    Simplifies boolean expressions where the answer can be determined without evaluating both sides. Note that this rule can eliminate expressions that might otherwise have been evaluated and thus is only safe when evaluations of expressions does not result in side effects.

  2. object ColumnPruning extends Rule[LogicalPlan]

    Attempts to eliminate the reading of unneeded columns from the query plan using the following transformations:

    Attempts to eliminate the reading of unneeded columns from the query plan using the following transformations:

    • Inserting Projections beneath the following operators:
      • Aggregate
      • Project <- Join
      • LeftSemiJoin
    • Collapse adjacent projections, performing alias substitution.
  3. object CombineFilters extends Rule[LogicalPlan]

    Combines two adjacent Filter operators into one, merging the conditions into one conjunctive predicate.

  4. object CombineLimits extends Rule[LogicalPlan]

    Combines two adjacent Limit operators into one, merging the expressions into one single expression.

  5. object ConstantFolding extends Rule[LogicalPlan]

    Replaces Expressions that can be statically evaluated with equivalent Literal values.

  6. object DecimalAggregates extends Rule[LogicalPlan]

    Speeds up aggregates on fixed-precision decimals by executing them on unscaled Long values.

    Speeds up aggregates on fixed-precision decimals by executing them on unscaled Long values.

    This uses the same rules for increasing the precision and scale of the output as org.apache.spark.sql.catalyst.analysis.HiveTypeCoercion.DecimalPrecision.

  7. object DefaultOptimizer extends Optimizer

  8. object LikeSimplification extends Rule[LogicalPlan]

    Simplifies LIKE expressions that do not need full regular expressions to evaluate the condition.

    Simplifies LIKE expressions that do not need full regular expressions to evaluate the condition. For example, when the expression is just checking to see if a string starts with a given pattern.

  9. object NullPropagation extends Rule[LogicalPlan]

    Replaces Expressions that can be statically evaluated with equivalent Literal values.

    Replaces Expressions that can be statically evaluated with equivalent Literal values. This rule is more specific with Null value propagation from bottom to top of the expression tree.

  10. object OptimizeIn extends Rule[LogicalPlan]

    Replaces (value, seq[Literal]) with optimized version(value, HashSet[Literal]) which is much faster

  11. object PushPredicateThroughJoin extends Rule[LogicalPlan] with PredicateHelper

    Pushes down Filter operators where the condition can be evaluated using only the attributes of the left or right side of a join.

    Pushes down Filter operators where the condition can be evaluated using only the attributes of the left or right side of a join. Other Filter conditions are moved into the condition of the Join.

    And also Pushes down the join filter, where the condition can be evaluated using only the attributes of the left or right side of sub query when applicable.

    Check https://cwiki.apache.org/confluence/display/Hive/OuterJoinBehavior for more details

  12. object PushPredicateThroughProject extends Rule[LogicalPlan]

    Pushes Filter operators through Project operators, in-lining any Aliases that were defined in the projection.

    Pushes Filter operators through Project operators, in-lining any Aliases that were defined in the projection.

    This heuristic is valid assuming the expression evaluation cost is minimal.

  13. object SimplifyCaseConversionExpressions extends Rule[LogicalPlan]

    Removes the inner CaseConversionExpression that are unnecessary because the inner conversion is overwritten by the outer one.

  14. object SimplifyCasts extends Rule[LogicalPlan]

    Removes Casts that are unnecessary because the input is already the correct type.

  15. object SimplifyFilters extends Rule[LogicalPlan]

    Removes filters that can be evaluated trivially.

    Removes filters that can be evaluated trivially. This is done either by eliding the filter for cases where it will always evaluate to true, or substituting a dummy empty relation when the filter will always evaluate to false.

  16. object UnionPushdown extends Rule[LogicalPlan]

    Pushes operations to either side of a Union.

Ungrouped