《深入浅出Apache Spark》系列②:Spark SQL原理精髓全解析

导读:SQL 诞生于 20 世纪 70 年代,至今已有半个世纪。SQL 语言具有语法简单,低学习门槛等特点,诞生之后迅速普及与流行开来。由于 SQL 具有易学易用的特点,使得开发人员容易掌握,企业若能在其计算机软件中支持 SQL,则可顺应当今降本增效的行业发展趋势。Spark 早期的 0.6 版本,主要围绕着 Spark Core 的功能,比如支持用户在 Spark Context 下用 RDD API 去写一些应用程序代码,当时还没有更简单的方式通过 Spark 去操纵数据。2012 年加州大学伯克利分校在 Spark 基础上通过兼容 Hive 语法,推出了 Shark 功能。并于 2014 年 5 月在 Spark1.0 版本正式发布的时候,推出了 Spark 社区自身实现的 Spark SQL。当时的 Spark SQL 在解析层是通过 Scala 模式匹配来进行实现的,不够灵活也没有开源的解析方案强大、稳健。Spark 在 2016 年 7 月改用 Antlr4 重新实现 Parser。2016 年 7 月至今,Spark 社区发展的最为稳健和活跃的功能模块即为 Spark SQL。

本期是 DataFun 深入浅出 Apache Spark 第二期的分享,主要介绍 Apache Spark SQL 原理,包括:

1. Apache Spark SQL 基本概念

2. Apache Spark SQL 核心组件

3. Apache Spark SQL API

一、Apache Spark SQL 基本概念

1.TreeNode & 2. AST(Abstract Syntax Tree) & 3. QueryPlan

SQL 本身有一套理论上比较成熟的架构,比如需要将 SQL 文本转换成抽象语法树(Abstract Syntax Tree)。TreeNode 代表了抽象语法树里面的某个节点,如 Limit 算子或者 Join 算子,通过大量 TreeNode 的不同实现最后组成了一棵抽象语法树(AST)。QueryPlan 是 TreeNode 基础上扩展的一个查询计划,既可以是逻辑的也可以是物理的,里面定义了一些查询计划节点的基本属性包括转换 API,可以对生成的 AST 进行遍历,遍历的方法类比树的深度优先/广度优先遍历,通过这样的方式对其实现访问和转换。

4. LogicalPlan vs 5. Physical Plan

LogicalPlan 是 QueryPlan 的实现,用于表示逻辑计划,在 Spark 中是类的实现。PhysicalPlan 是纯逻辑的概念,表示物理计划,实际的实现是 SparkPlan,用于执行物理算子。

6. Rule 规则& 7. Rule Executor 规则执行器

规则应用于 LogicalPlan 构建的逻辑的抽象语法树,比如把属性绑定到某个表的某个字段;或者通过元数据绑定的分析过程找到某个表是位于 MySQL 数据库还是位于 Hive 中某一个 HDFS 存储目录;也可以是在编译理论里面会有的常量表达式折叠这样的优化。以上这些优化或者分析的工作可以在 Spark 中抽象成规则。每种规则都会对 AST 通过调用 QueryPlan 里面的转换 API 应用一些转换。

Rule 规则类似模板,里面定义了一些逻辑,实际触发规则需要能执行它的 RuleExecutor。在 Spark 中会将规则组织成批,每批 Rule 会有其处理的迭代策略:包括需要执行一次的(Onceÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值