AnalysisBarrier Leaf Logical Operator — Hiding Child Query Plan in Analysis
AnalysisBarrier
is a leaf logical operator that is a wrapper of an analyzed logical plan to hide it from the Spark Analyzer. The purpose of AnalysisBarrier
is to prevent the child logical plan from being analyzed again (and increasing the time spent on query analysis).
AnalysisBarrier
is created when:
-
ResolveReferences
logical resolution rule is requested to dedupRight -
ResolveMissingReferences
logical resolution rule is requested to resolveExprsAndAddMissingAttrs -
Dataset
is created -
DataFrameWriter
is requested to execute a logical command for writing to a data source V1 (whenDataFrameWriter
is requested to save the rows of a structured query (a DataFrame) to a data source) -
KeyValueGroupedDataset
is requested for the logical query plan
AnalysisBarrier
takes a single child
logical query plan when created.
AnalysisBarrier
returns the child logical query plan when requested for the inner nodes (that should be shown as an inner nested tree of this node).
AnalysisBarrier
simply requests the child logical query plan for the output schema attributes.
AnalysisBarrier
simply requests the child logical query plan for the isStreaming flag.
AnalysisBarrier
simply requests the child logical operator for the canonicalized version.