1、RDD 和 SparkSQL 运行时的区别:
- 和 RDD 不同, SparkSQL 的 Dataset 和 SQL 并不是直接生成计划交给集群执行, 而是经过了一个叫做 Catalyst 的优化器, 这个优化器能够自动帮助开发者优化代码。
2、SparkSQL 的执行流程:
1、Parser转换器,第三方类库 Antlr 实现。将 sql 字符串切分成 Token,根据语义规则解析成一颗AST语法树,称为Unresolved Logical Plan 未解决的逻辑计划;
简单来说就是判断 SQL 语句是否符合规范,比如select from where 这些关键字是否写对。就算表名字段名写错也无所谓。
2、Unresolved Logical Plan经过Analyzer分析器,借助于表的真实数据元数据 schema catalog,进行数据类型绑定和函数绑定,解析为