UnresolvedRelation Logical Operator¶
UnresolvedRelation is a leaf logical operator with a name (as a NamedRelation) that represents a named relation that has yet to be looked up in a catalog at analysis.
UnresolvedRelation is never resolved and has to be replaced using ResolveRelations logical resolution rule.
Creating Instance¶
UnresolvedRelation takes the following to be created:
- Multi-part identifier
- Options
- isStreaming flag
UnresolvedRelation is created (possibly indirectly using apply factory) when:
AstBuilderis requested to parse TABLE statement and table name, and create an UnresolvedRelation- DataFrameReader.table operator is used
- DataFrameWriterV2 operators are used:
DataStreamReader.table(Spark Structured Streaming) operator is used- table (Catalyst DSL) operator is used
isStreaming Flag¶
UnresolvedRelation is given isStreaming flag when created.
isStreaming can be specified with apply factory method.
isStreaming is disabled (false) by default.
isStreaming is enabled (true) when:
AstBuilderis requested to parse STREAM relation clauseDataStreamReader.table(Spark Structured Streaming) operator is used
Creating UnresolvedRelation¶
apply(
tableIdentifier: TableIdentifier): UnresolvedRelation
apply(
tableIdentifier: TableIdentifier,
extraOptions: CaseInsensitiveStringMap,
isStreaming: Boolean): UnresolvedRelation
apply creates an UnresolvedRelation.
apply is used when:
- DataFrameWriter.insertInto operator is used
- SparkSession.table operator is used
Name¶
name is quoted multi-part dot-separated table name.
Quoted Multi-Part Dot-Separated Table Name¶
tableName: String
tableName is a quoted multi-part .-separated multipartIdentifier.
resolved¶
resolved is disabled (false).
nodePatterns¶
nodePatterns is a single-element collection with UNRESOLVED_RELATION.