- Mastering Apache Spark 2.x(Second Edition)
- Romeo Kienzler
- 302字
- 2021-07-02 18:55:33
Internal class and object representations of LEPs
As an unresolved plan is basically the first tree created from either SQL statements or the relational API of DataFrames and Datasets, it is mainly composed of sub-types of the LeafExpression objects, which are bound together by the Expression objects, therefore forming a tree of the TreeNode objects since all these objects are sub-types of TreeNode. Overall, this data structure is a LogicalPlan, which is therefore reflected as a LogicalPlan object. Note that LogicalPlan extends QueryPlan, and QueryPlan itself is TreeNode again. In other words, LogicalPlan is nothing else than a set of TreeNode objects.
The following two figures illustrate the inheritance tree of the different objects discussed:

As can be seen clearly in the previous figure, LeafExpression is the parent of most of the functional operators. Let's take Star for example. Star, a child class of LeafExpression, is parent to ResolvedStar and UnresolvedStar.
Since star in an SQL expression denotes all columns of a particular relation, Catalyst has to query the catalog in order to determine the names and types of columns referred to. So once the tree gets transformed from unresolved to resolved, also those classes are replaced. All these classes are inherited from TreeNode and are used to form abstract syntax trees. The same holds true not only for abstract syntax trees, but also for execution plans, as QueryPlan also inherits from TreeNode:

- Instant Apache Stanbol
- PostgreSQL Cookbook
- OpenNI Cookbook
- Building a Recommendation Engine with Scala
- 學(xué)Python也可以這么有趣
- Learning Hunk
- 全棧自動(dòng)化測(cè)試實(shí)戰(zhàn):基于TestNG、HttpClient、Selenium和Appium
- 大話Java:程序設(shè)計(jì)從入門(mén)到精通
- Visual Basic程序設(shè)計(jì)(第三版)
- Mastering Gephi Network Visualization
- C++程序設(shè)計(jì)
- 零基礎(chǔ)學(xué)Java第2版
- 算法精解:C語(yǔ)言描述
- Analytics for the Internet of Things(IoT)
- C++游戲設(shè)計(jì)案例教程