Class HashToRandomExchangePrel
java.lang.Object
org.apache.calcite.rel.AbstractRelNode
org.apache.calcite.rel.SingleRel
org.apache.drill.exec.planner.physical.SinglePrel
org.apache.drill.exec.planner.physical.ExchangePrel
org.apache.drill.exec.planner.physical.HashToRandomExchangePrel
- All Implemented Interfaces:
Cloneable
,Iterable<Prel>
,org.apache.calcite.plan.RelOptNode
,org.apache.calcite.rel.RelNode
,DrillRelNode
,Prel
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.calcite.rel.RelNode
org.apache.calcite.rel.RelNode.Context
-
Field Summary
Fields inherited from class org.apache.calcite.rel.SingleRel
input
Fields inherited from class org.apache.calcite.rel.AbstractRelNode
digest, id, rowType, traitSet
Fields inherited from interface org.apache.drill.exec.planner.physical.Prel
DRILL_PHYSICAL
-
Constructor Summary
ConstructorDescriptionHashToRandomExchangePrel
(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traitSet, org.apache.calcite.rel.RelNode input, List<DrillDistributionTrait.DistributionField> fields) -
Method Summary
Modifier and TypeMethodDescriptionorg.apache.calcite.plan.RelOptCost
computeSelfCost
(org.apache.calcite.plan.RelOptPlanner planner, org.apache.calcite.rel.metadata.RelMetadataQuery mq) HashToRandomExchange processes M input rows and hash partitions them based on computing a hash value on the distribution fields.constructMuxPrel
(Prel child, OptionManager options) This method creates a new UnorderedMux and Demux exchanges if mux operators are enabled.org.apache.calcite.rel.RelNode
org.apache.calcite.rel.RelWriter
explainTerms
(org.apache.calcite.rel.RelWriter pw) A Prel's own SelectionVector mode - i.e whether it generates an SV2, SV4 or NonegetPhysicalOperator
(PhysicalPlanCreator creator) Supported 'encodings' of a Prel indicates what are the acceptable modes of SelectionVector of its child PrelMethods inherited from class org.apache.drill.exec.planner.physical.ExchangePrel
accept
Methods inherited from class org.apache.drill.exec.planner.physical.SinglePrel
iterator, needsFinalColumnReordering
Methods inherited from class org.apache.calcite.rel.SingleRel
childrenAccept, deriveRowType, estimateRowCount, getInput, getInputs, replaceInput
Methods inherited from class org.apache.calcite.rel.AbstractRelNode
accept, accept, collectVariablesSet, collectVariablesUsed, deepEquals, deepHashCode, equals, explain, getCluster, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getRelDigest, getRelTypeName, getRowType, getTable, getTraitSet, getVariablesSet, hashCode, isEnforcer, isValid, metadata, onRegister, recomputeDigest, register, sole, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
Methods inherited from interface org.apache.drill.exec.planner.physical.Prel
prepareForLateralUnnestPipeline
Methods inherited from interface org.apache.calcite.rel.RelNode
accept, accept, childrenAccept, collectVariablesSet, collectVariablesUsed, deepEquals, deepHashCode, estimateRowCount, explain, explain, fieldIsNullable, getConvention, getCorrelVariable, getDigest, getExpectedInputRowType, getInput, getInputs, getRelDigest, getRelTypeName, getRowType, getTable, getVariablesSet, isEnforcer, isValid, metadata, onRegister, recomputeDigest, register, replaceInput
Methods inherited from interface org.apache.calcite.plan.RelOptNode
getCluster, getDescription, getId, getTraitSet
-
Constructor Details
-
HashToRandomExchangePrel
public HashToRandomExchangePrel(org.apache.calcite.plan.RelOptCluster cluster, org.apache.calcite.plan.RelTraitSet traitSet, org.apache.calcite.rel.RelNode input, List<DrillDistributionTrait.DistributionField> fields)
-
-
Method Details
-
computeSelfCost
public org.apache.calcite.plan.RelOptCost computeSelfCost(org.apache.calcite.plan.RelOptPlanner planner, org.apache.calcite.rel.metadata.RelMetadataQuery mq) HashToRandomExchange processes M input rows and hash partitions them based on computing a hash value on the distribution fields. If there are N nodes (endpoints), we can assume for costing purposes on average each sender will send M/N rows to 1 destination endpoint. (See DrillCostBase for symbol notations) Include impact of skewness of distribution : the more keys used, the less likely the distribution will be skewed. The hash cpu cost will be proportional to 1 / #_keys. C = CPU cost of hashing k fields of M/N rows + CPU cost of SV remover for M/N rows + Network cost of sending M/N rows to 1 destination. So, C = (h * 1/k * M/N) + (s * M/N) + (w * M/N) Total cost = N * C- Specified by:
computeSelfCost
in interfaceorg.apache.calcite.rel.RelNode
- Overrides:
computeSelfCost
in classorg.apache.calcite.rel.AbstractRelNode
-
copy
public org.apache.calcite.rel.RelNode copy(org.apache.calcite.plan.RelTraitSet traitSet, List<org.apache.calcite.rel.RelNode> inputs) - Specified by:
copy
in interfaceorg.apache.calcite.rel.RelNode
- Overrides:
copy
in classorg.apache.calcite.rel.AbstractRelNode
-
getPhysicalOperator
- Throws:
IOException
-
getFields
-
explainTerms
public org.apache.calcite.rel.RelWriter explainTerms(org.apache.calcite.rel.RelWriter pw) - Overrides:
explainTerms
in classorg.apache.calcite.rel.SingleRel
-
constructMuxPrel
This method creates a new UnorderedMux and Demux exchanges if mux operators are enabled.- Overrides:
constructMuxPrel
in classExchangePrel
- Parameters:
child
- input to the new Unordered[Mux/Demux]Prel or new HashToRandomExchange node.options
- options manager to check if mux is enabled.
-
getEncoding
Description copied from interface:Prel
A Prel's own SelectionVector mode - i.e whether it generates an SV2, SV4 or None -
getSupportedEncodings
Description copied from interface:Prel
Supported 'encodings' of a Prel indicates what are the acceptable modes of SelectionVector of its child Prel- Specified by:
getSupportedEncodings
in interfacePrel
- Overrides:
getSupportedEncodings
in classSinglePrel
-