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
inputFields inherited from class org.apache.calcite.rel.AbstractRelNode
digest, id, rowType, traitSetFields inherited from interface org.apache.drill.exec.planner.physical.Prel
DRILL_PHYSICAL -
Constructor Summary
ConstructorsConstructorDescriptionHashToRandomExchangePrel(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.RelOptCostcomputeSelfCost(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.RelNodeorg.apache.calcite.rel.RelWriterexplainTerms(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
acceptMethods inherited from class org.apache.drill.exec.planner.physical.SinglePrel
iterator, needsFinalColumnReorderingMethods inherited from class org.apache.calcite.rel.SingleRel
childrenAccept, deriveRowType, estimateRowCount, getInput, getInputs, replaceInputMethods 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, toStringMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliteratorMethods inherited from interface org.apache.drill.exec.planner.physical.Prel
prepareForLateralUnnestPipelineMethods 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, replaceInputMethods 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:
computeSelfCostin interfaceorg.apache.calcite.rel.RelNode- Overrides:
computeSelfCostin 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:
copyin interfaceorg.apache.calcite.rel.RelNode- Overrides:
copyin classorg.apache.calcite.rel.AbstractRelNode
-
getPhysicalOperator
- Throws:
IOException
-
getFields
-
explainTerms
public org.apache.calcite.rel.RelWriter explainTerms(org.apache.calcite.rel.RelWriter pw) - Overrides:
explainTermsin classorg.apache.calcite.rel.SingleRel
-
constructMuxPrel
This method creates a new UnorderedMux and Demux exchanges if mux operators are enabled.- Overrides:
constructMuxPrelin 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:PrelA Prel's own SelectionVector mode - i.e whether it generates an SV2, SV4 or None -
getSupportedEncodings
Description copied from interface:PrelSupported 'encodings' of a Prel indicates what are the acceptable modes of SelectionVector of its child Prel- Specified by:
getSupportedEncodingsin interfacePrel- Overrides:
getSupportedEncodingsin classSinglePrel
-