public abstract class TwoInputNode extends OptimizerNode
OptimizerNode.UnclosedBranchDescriptor| Modifier and Type | Field and Description |
|---|---|
protected DagConnection |
input1 |
protected DagConnection |
input2 |
protected org.apache.flink.api.common.operators.util.FieldList |
keys1 |
protected org.apache.flink.api.common.operators.util.FieldList |
keys2 |
cachedPlans, closedBranchingNodes, costWeight, estimatedNumRecords, estimatedOutputSize, hereJoinedBranches, id, MAX_DYNAMIC_PATH_COST_WEIGHT, onDynamicPath, openBranches, uniqueFields| Constructor and Description |
|---|
TwoInputNode(org.apache.flink.api.common.operators.DualInputOperator<?,?,?,?> operator)
Creates a new two input node for the optimizer plan, representing the given operator.
|
| Modifier and Type | Method and Description |
|---|---|
void |
accept(org.apache.flink.util.Visitor<OptimizerNode> visitor)
This method implements the visit of a depth-first graph traversing visitor.
|
protected void |
addLocalCandidates(Channel template1,
Channel template2,
List<Set<? extends NamedChannel>> broadcastPlanChannels,
RequestedGlobalProperties rgps1,
RequestedGlobalProperties rgps2,
List<PlanNode> target,
OperatorDescriptorDual.LocalPropertiesPair[] validLocalCombinations,
CostEstimator estimator) |
void |
computeInterestingPropertiesForInputs(CostEstimator estimator)
Tells the node to compute the interesting properties for its inputs.
|
void |
computeUnclosedBranchStack()
This method causes the node to compute the description of open branches in its sub-plan.
|
List<PlanNode> |
getAlternativePlans(CostEstimator estimator)
Computes the plan alternatives for this node, an implicitly for all nodes that are children
of this node.
|
DagConnection |
getFirstIncomingConnection()
Gets the DagConnection through which this node receives its first input.
|
OptimizerNode |
getFirstPredecessorNode() |
List<DagConnection> |
getIncomingConnections()
Gets all incoming connections of this node.
|
org.apache.flink.api.common.operators.DualInputOperator<?,?,?,?> |
getOperator()
Gets the operator represented by this optimizer node.
|
protected abstract List<OperatorDescriptorDual> |
getPossibleProperties() |
DagConnection |
getSecondIncomingConnection()
Gets the DagConnection through which this node receives its second input.
|
OptimizerNode |
getSecondPredecessorNode() |
org.apache.flink.api.common.operators.SemanticProperties |
getSemanticProperties() |
protected org.apache.flink.api.common.operators.SemanticProperties |
getSemanticPropertiesForGlobalPropertyFiltering() |
protected org.apache.flink.api.common.operators.SemanticProperties |
getSemanticPropertiesForLocalPropertyFiltering() |
protected void |
instantiate(OperatorDescriptorDual operator,
Channel in1,
Channel in2,
List<Set<? extends NamedChannel>> broadcastPlanChannels,
List<PlanNode> target,
CostEstimator estimator,
RequestedGlobalProperties globPropsReq1,
RequestedGlobalProperties globPropsReq2,
RequestedLocalProperties locPropsReq1,
RequestedLocalProperties locPropsReq2) |
protected void |
placePipelineBreakersIfNecessary(org.apache.flink.runtime.operators.DriverStrategy strategy,
Channel in1,
Channel in2) |
void |
setInput(Map<org.apache.flink.api.common.operators.Operator<?>,OptimizerNode> contractToNode,
org.apache.flink.api.common.ExecutionMode defaultExecutionMode)
This function connects the predecessors to this operator.
|
addBroadcastConnection, addClosedBranch, addClosedBranches, addOutgoingConnection, areBranchCompatible, clearInterestingProperties, computeOperatorSpecificDefaultEstimates, computeOutputEstimates, computeUnclosedBranchStackForBroadcastInputs, computeUnionOfInterestingPropertiesFromSuccessors, getBranchesForParent, getBroadcastConnectionNames, getBroadcastConnections, getClosedBranchingNodes, getCostWeight, getDumpableInputs, getEstimatedAvgWidthPerOutputRecord, getEstimatedNumRecords, getEstimatedOutputSize, getId, getInterestingProperties, getMaxDepth, getMinimalMemoryAcrossAllSubTasks, getOpenBranches, getOperatorName, getOptimizerNode, getOutgoingConnections, getParallelism, getPlanNode, getPredecessors, getUniqueFields, hasUnclosedBranches, haveAllOutputConnectionInterestingProperties, identifyDynamicPath, initId, isBranching, isOnDynamicPath, markAllOutgoingConnectionsAsPipelineBreaking, mergeLists, prunePlanAlternatives, prunePlanAlternativesWithCommonBranching, readStubAnnotations, readUniqueFieldsAnnotation, removeClosedBranches, setBroadcastInputs, setEstimatedNumRecords, setEstimatedOutputSize, setParallelism, toStringprotected final org.apache.flink.api.common.operators.util.FieldList keys1
protected final org.apache.flink.api.common.operators.util.FieldList keys2
protected DagConnection input1
protected DagConnection input2
public TwoInputNode(org.apache.flink.api.common.operators.DualInputOperator<?,?,?,?> operator)
operator - The operator that the optimizer DAG node should represent.public org.apache.flink.api.common.operators.DualInputOperator<?,?,?,?> getOperator()
OptimizerNodegetOperator in class OptimizerNodepublic DagConnection getFirstIncomingConnection()
public DagConnection getSecondIncomingConnection()
public OptimizerNode getFirstPredecessorNode()
public OptimizerNode getSecondPredecessorNode()
public List<DagConnection> getIncomingConnections()
OptimizerNodegetIncomingConnections in class OptimizerNodepublic void setInput(Map<org.apache.flink.api.common.operators.Operator<?>,OptimizerNode> contractToNode, org.apache.flink.api.common.ExecutionMode defaultExecutionMode)
OptimizerNodesetInput in class OptimizerNodecontractToNode - The map from program operators to optimizer nodes.defaultExecutionMode - The data exchange mode to use, if the operator does not specify
one.protected abstract List<OperatorDescriptorDual> getPossibleProperties()
public void computeInterestingPropertiesForInputs(CostEstimator estimator)
OptimizerNodecomputeInterestingPropertiesForInputs in class OptimizerNodeestimator - The CostEstimator instance to use for plan cost estimation.public List<PlanNode> getAlternativePlans(CostEstimator estimator)
OptimizerNodegetAlternatives() on its
children to get their plan alternatives, and build its own alternatives on top of those.getAlternativePlans in class OptimizerNodeestimator - The cost estimator used to estimate the costs of each plan alternative.protected void addLocalCandidates(Channel template1, Channel template2, List<Set<? extends NamedChannel>> broadcastPlanChannels, RequestedGlobalProperties rgps1, RequestedGlobalProperties rgps2, List<PlanNode> target, OperatorDescriptorDual.LocalPropertiesPair[] validLocalCombinations, CostEstimator estimator)
protected void instantiate(OperatorDescriptorDual operator, Channel in1, Channel in2, List<Set<? extends NamedChannel>> broadcastPlanChannels, List<PlanNode> target, CostEstimator estimator, RequestedGlobalProperties globPropsReq1, RequestedGlobalProperties globPropsReq2, RequestedLocalProperties locPropsReq1, RequestedLocalProperties locPropsReq2)
protected void placePipelineBreakersIfNecessary(org.apache.flink.runtime.operators.DriverStrategy strategy,
Channel in1,
Channel in2)
public void computeUnclosedBranchStack()
OptimizerNodeopenBranches
field to a stack of unclosed branches, the latest one top. A branch is considered closed, if
some later node sees all of the branching node's outputs, no matter if there have been more
branches to different paths in the meantime.computeUnclosedBranchStack in class OptimizerNodepublic org.apache.flink.api.common.operators.SemanticProperties getSemanticProperties()
getSemanticProperties in class OptimizerNodeprotected org.apache.flink.api.common.operators.SemanticProperties getSemanticPropertiesForLocalPropertyFiltering()
protected org.apache.flink.api.common.operators.SemanticProperties getSemanticPropertiesForGlobalPropertyFiltering()
public void accept(org.apache.flink.util.Visitor<OptimizerNode> visitor)
OptimizerNodepreVisit() method, then hand the visitor to their children, and
finally call the postVisit() method.accept in interface org.apache.flink.util.Visitable<OptimizerNode>accept in class OptimizerNodevisitor - The graph traversing visitor.Visitable.accept(org.apache.flink.util.Visitor)Copyright © 2014–2021 The Apache Software Foundation. All rights reserved.