Logical Operators (Logical Relational Operators) are building blocks of logical query plans in Spark SQL.
Logical Query Plan is a tree of nodes of logical operators that in turn can have (trees of) Catalyst expressions. In other words, there are at least two trees at every level (operator).
The main abstraction is LogicalPlan that is a recursive data structure with zero, one, two or more child logical operators:
Among the logical operators are Commands.