Class DefaultCostEstimator
- java.lang.Object
-
- org.apache.flink.optimizer.costs.CostEstimator
-
- org.apache.flink.optimizer.costs.DefaultCostEstimator
-
public class DefaultCostEstimator extends CostEstimator
A default cost estimator that has access to basic size and cardinality estimates.This estimator works with actual estimates (as far as they are available) and falls back to setting relative costs, if no estimates are available. That way, the estimator makes sure that plans with different strategies are costed differently, also in the absence of estimates. The different relative costs in the absence of estimates represent this estimator's heuristic guidance towards certain strategies.
For robustness reasons, we always assume that the whole data is shipped during a repartition step. We deviate from the typical estimate of
(n - 1) / n(with n being the number of nodes), because for a parallelism of 1, that would yield a shipping of zero bytes. While this is usually correct, the runtime scheduling may still choose to move tasks to different nodes, so that we do not know that no data is shipped.
-
-
Constructor Summary
Constructors Constructor Description DefaultCostEstimator()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddArtificialDamCost(EstimateProvider estimates, long bufferSize, Costs costs)voidaddBlockNestedLoopsCosts(EstimateProvider outerSide, EstimateProvider innerSide, long blockSize, Costs costs, int costWeight)voidaddBroadcastCost(EstimateProvider estimates, int replicationFactor, Costs costs)voidaddCachedHybridHashCosts(EstimateProvider buildSideInput, EstimateProvider probeSideInput, Costs costs, int costWeight)Calculates the costs for the cached variant of the hybrid hash join.voidaddFileInputCost(long fileSizeInBytes, Costs costs)voidaddHashPartitioningCost(EstimateProvider estimates, Costs costs)voidaddHybridHashCosts(EstimateProvider buildSideInput, EstimateProvider probeSideInput, Costs costs, int costWeight)voidaddLocalMergeCost(EstimateProvider input1, EstimateProvider input2, Costs costs, int costWeight)voidaddLocalSortCost(EstimateProvider estimates, Costs costs)voidaddRandomPartitioningCost(EstimateProvider estimates, Costs costs)voidaddRangePartitionCost(EstimateProvider estimates, Costs costs)voidaddStreamedNestedLoopsCosts(EstimateProvider outerSide, EstimateProvider innerSide, long bufferSize, Costs costs, int costWeight)-
Methods inherited from class org.apache.flink.optimizer.costs.CostEstimator
costOperator
-
-
-
-
Method Detail
-
addRandomPartitioningCost
public void addRandomPartitioningCost(EstimateProvider estimates, Costs costs)
- Specified by:
addRandomPartitioningCostin classCostEstimator
-
addHashPartitioningCost
public void addHashPartitioningCost(EstimateProvider estimates, Costs costs)
- Specified by:
addHashPartitioningCostin classCostEstimator
-
addRangePartitionCost
public void addRangePartitionCost(EstimateProvider estimates, Costs costs)
- Specified by:
addRangePartitionCostin classCostEstimator
-
addBroadcastCost
public void addBroadcastCost(EstimateProvider estimates, int replicationFactor, Costs costs)
- Specified by:
addBroadcastCostin classCostEstimator
-
addFileInputCost
public void addFileInputCost(long fileSizeInBytes, Costs costs)- Specified by:
addFileInputCostin classCostEstimator
-
addLocalSortCost
public void addLocalSortCost(EstimateProvider estimates, Costs costs)
- Specified by:
addLocalSortCostin classCostEstimator
-
addLocalMergeCost
public void addLocalMergeCost(EstimateProvider input1, EstimateProvider input2, Costs costs, int costWeight)
- Specified by:
addLocalMergeCostin classCostEstimator
-
addHybridHashCosts
public void addHybridHashCosts(EstimateProvider buildSideInput, EstimateProvider probeSideInput, Costs costs, int costWeight)
- Specified by:
addHybridHashCostsin classCostEstimator
-
addCachedHybridHashCosts
public void addCachedHybridHashCosts(EstimateProvider buildSideInput, EstimateProvider probeSideInput, Costs costs, int costWeight)
Calculates the costs for the cached variant of the hybrid hash join. We are assuming by default that half of the cached hash table fit into memory.- Specified by:
addCachedHybridHashCostsin classCostEstimator
-
addStreamedNestedLoopsCosts
public void addStreamedNestedLoopsCosts(EstimateProvider outerSide, EstimateProvider innerSide, long bufferSize, Costs costs, int costWeight)
- Specified by:
addStreamedNestedLoopsCostsin classCostEstimator
-
addBlockNestedLoopsCosts
public void addBlockNestedLoopsCosts(EstimateProvider outerSide, EstimateProvider innerSide, long blockSize, Costs costs, int costWeight)
- Specified by:
addBlockNestedLoopsCostsin classCostEstimator
-
addArtificialDamCost
public void addArtificialDamCost(EstimateProvider estimates, long bufferSize, Costs costs)
- Specified by:
addArtificialDamCostin classCostEstimator
-
-