Package org.apache.flink.optimizer.dag
Class DataSinkNode
- java.lang.Object
-
- org.apache.flink.optimizer.dag.OptimizerNode
-
- org.apache.flink.optimizer.dag.DataSinkNode
-
- All Implemented Interfaces:
EstimateProvider,DumpableNode<OptimizerNode>,org.apache.flink.util.Visitable<OptimizerNode>
public class DataSinkNode extends OptimizerNode
The Optimizer representation of a data sink.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.flink.optimizer.dag.OptimizerNode
OptimizerNode.UnclosedBranchDescriptor
-
-
Field Summary
Fields Modifier and Type Field Description protected DagConnectioninput-
Fields inherited from class org.apache.flink.optimizer.dag.OptimizerNode
cachedPlans, closedBranchingNodes, costWeight, estimatedNumRecords, estimatedOutputSize, hereJoinedBranches, id, MAX_DYNAMIC_PATH_COST_WEIGHT, onDynamicPath, openBranches, uniqueFields
-
-
Constructor Summary
Constructors Constructor Description DataSinkNode(org.apache.flink.api.common.operators.GenericDataSinkBase<?> sink)Creates a new DataSinkNode for the given sink operator.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(org.apache.flink.util.Visitor<OptimizerNode> visitor)This method implements the visit of a depth-first graph traversing visitor.voidcomputeInterestingPropertiesForInputs(CostEstimator estimator)Tells the node to compute the interesting properties for its inputs.protected voidcomputeOperatorSpecificDefaultEstimates(DataStatistics statistics)Computes the estimated outputs for the data sink.voidcomputeUnclosedBranchStack()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.protected List<OptimizerNode.UnclosedBranchDescriptor>getBranchesForParent(DagConnection parent)List<DagConnection>getIncomingConnections()Gets all incoming connections of this node.DagConnectiongetInputConnection()Gets the input of the sink.org.apache.flink.api.common.operators.GenericDataSinkBase<?>getOperator()Gets the operator for which this optimizer sink node was created.StringgetOperatorName()Gets the name of this node, which is the name of the function/operator, or data source / data sink.List<DagConnection>getOutgoingConnections()Gets all outgoing connections, which is an empty set for the data sink.OptimizerNodegetPredecessorNode()Gets the predecessor of this node.org.apache.flink.api.common.operators.SemanticPropertiesgetSemanticProperties()voidsetInput(Map<org.apache.flink.api.common.operators.Operator<?>,OptimizerNode> contractToNode, org.apache.flink.api.common.ExecutionMode defaultExchangeMode)This function connects the predecessors to this operator.-
Methods inherited from class org.apache.flink.optimizer.dag.OptimizerNode
addBroadcastConnection, addClosedBranch, addClosedBranches, addOutgoingConnection, areBranchCompatible, clearInterestingProperties, computeOutputEstimates, computeUnclosedBranchStackForBroadcastInputs, computeUnionOfInterestingPropertiesFromSuccessors, getBroadcastConnectionNames, getBroadcastConnections, getClosedBranchingNodes, getCostWeight, getDumpableInputs, getEstimatedAvgWidthPerOutputRecord, getEstimatedNumRecords, getEstimatedOutputSize, getId, getInterestingProperties, getMaxDepth, getMinimalMemoryAcrossAllSubTasks, getOpenBranches, getOptimizerNode, getParallelism, getPlanNode, getPredecessors, getUniqueFields, hasUnclosedBranches, haveAllOutputConnectionInterestingProperties, identifyDynamicPath, initId, isBranching, isOnDynamicPath, markAllOutgoingConnectionsAsPipelineBreaking, mergeLists, prunePlanAlternatives, prunePlanAlternativesWithCommonBranching, readStubAnnotations, readUniqueFieldsAnnotation, removeClosedBranches, setBroadcastInputs, setEstimatedNumRecords, setEstimatedOutputSize, setParallelism, toString
-
-
-
-
Field Detail
-
input
protected DagConnection input
-
-
Method Detail
-
getInputConnection
public DagConnection getInputConnection()
Gets the input of the sink.- Returns:
- The input connection.
-
getPredecessorNode
public OptimizerNode getPredecessorNode()
Gets the predecessor of this node.- Returns:
- The predecessor, or null, if no predecessor has been set.
-
getOperator
public org.apache.flink.api.common.operators.GenericDataSinkBase<?> getOperator()
Gets the operator for which this optimizer sink node was created.- Overrides:
getOperatorin classOptimizerNode- Returns:
- The node's underlying operator.
-
getOperatorName
public String getOperatorName()
Description copied from class:OptimizerNodeGets the name of this node, which is the name of the function/operator, or data source / data sink.- Specified by:
getOperatorNamein classOptimizerNode- Returns:
- The node name.
-
getIncomingConnections
public List<DagConnection> getIncomingConnections()
Description copied from class:OptimizerNodeGets all incoming connections of this node. This method needs to be overridden by subclasses to return the children.- Specified by:
getIncomingConnectionsin classOptimizerNode- Returns:
- The list of incoming connections.
-
getOutgoingConnections
public List<DagConnection> getOutgoingConnections()
Gets all outgoing connections, which is an empty set for the data sink.- Overrides:
getOutgoingConnectionsin classOptimizerNode- Returns:
- An empty list.
-
setInput
public void setInput(Map<org.apache.flink.api.common.operators.Operator<?>,OptimizerNode> contractToNode, org.apache.flink.api.common.ExecutionMode defaultExchangeMode)
Description copied from class:OptimizerNodeThis function connects the predecessors to this operator.- Specified by:
setInputin classOptimizerNode- Parameters:
contractToNode- The map from program operators to optimizer nodes.defaultExchangeMode- The data exchange mode to use, if the operator does not specify one.
-
computeOperatorSpecificDefaultEstimates
protected void computeOperatorSpecificDefaultEstimates(DataStatistics statistics)
Computes the estimated outputs for the data sink. Since the sink does not modify anything, it simply copies the output estimates from its direct predecessor.- Specified by:
computeOperatorSpecificDefaultEstimatesin classOptimizerNode
-
computeInterestingPropertiesForInputs
public void computeInterestingPropertiesForInputs(CostEstimator estimator)
Description copied from class:OptimizerNodeTells the node to compute the interesting properties for its inputs. The interesting properties for the node itself must have been computed before. The node must then see how many of interesting properties it preserves and add its own.- Specified by:
computeInterestingPropertiesForInputsin classOptimizerNode- Parameters:
estimator- TheCostEstimatorinstance to use for plan cost estimation.
-
computeUnclosedBranchStack
public void computeUnclosedBranchStack()
Description copied from class:OptimizerNodeThis method causes the node to compute the description of open branches in its sub-plan. An open branch describes, that a (transitive) child node had multiple outputs, which have not all been re-joined in the sub-plan. This method needs to set theopenBranchesfield 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.- Specified by:
computeUnclosedBranchStackin classOptimizerNode
-
getBranchesForParent
protected List<OptimizerNode.UnclosedBranchDescriptor> getBranchesForParent(DagConnection parent)
- Overrides:
getBranchesForParentin classOptimizerNode
-
getAlternativePlans
public List<PlanNode> getAlternativePlans(CostEstimator estimator)
Description copied from class:OptimizerNodeComputes the plan alternatives for this node, an implicitly for all nodes that are children of this node. This method must determine for each alternative the global and local properties and the costs. This method may recursively callgetAlternatives()on its children to get their plan alternatives, and build its own alternatives on top of those.- Specified by:
getAlternativePlansin classOptimizerNode- Parameters:
estimator- The cost estimator used to estimate the costs of each plan alternative.- Returns:
- A list containing all plan alternatives.
-
getSemanticProperties
public org.apache.flink.api.common.operators.SemanticProperties getSemanticProperties()
- Specified by:
getSemanticPropertiesin classOptimizerNode
-
accept
public void accept(org.apache.flink.util.Visitor<OptimizerNode> visitor)
Description copied from class:OptimizerNodeThis method implements the visit of a depth-first graph traversing visitor. Implementers must first call thepreVisit()method, then hand the visitor to their children, and finally call thepostVisit()method.- Specified by:
acceptin interfaceorg.apache.flink.util.Visitable<OptimizerNode>- Specified by:
acceptin classOptimizerNode- Parameters:
visitor- The graph traversing visitor.- See Also:
Visitable.accept(org.apache.flink.util.Visitor)
-
-