Spark SQL 是 Spark 的一个结构化数据处理模块,提供了一个 DataFrame 的抽象模型,在 Spark 1.6.0之后,又加入了 DataSet 的抽象模型,因此它是一个分布式 SQL 查询引擎,Spark SQL 主要由 Catalyst 优化,Spark SQL 内核,Hive 支持三部分组成。
Spark SQL的架构是什么样的?
如上所示,虽然有点复杂,但是并不影响我们的学习,下面简单概述一下其架构原理:
- 使用 SqlParser 对 SQL 语句进行解析,生成 Unresolved 逻辑计划(没有提取 schema 信息)。
- 使用 Catalyst 分析器,结合数据字典(catalog)进行绑定,生成Analyzed逻辑计划,在此过程中,Schema Catalog 则要提取 schema 信息。
- 使用 Catalyst 优化器对 Analyzed 逻辑计划进行优化,按照优化规则得到 Optimized 逻辑计划。
- 接着和 Spark Planner 交互,使用相应的策略将逻辑计划转换为物理计划,然后调用 next 函数,生成可执行物理计划。
- 调用 toDF,最后生成 DataFrame。
Spark SQL有哪些优点?
- 兼容多种数据格式,如上面所说的parquet文件,HIve表,JSON文件等等。
- 方便扩展,它的优化器,解析器都可以重新定义。
- 性能优化方面:采用了内存列式存储,动态字节码生成等技术,还采用了内存缓存数据。
- 支持多种语言操作,包括java,scala,python,R语言等。
本教程主要从入门讲解 Spark SQL 的使用,最后通过实战案例来巩固之前所学的知识,达到深入浅出,融会贯通的教学目标。对于 Hive 会从入门带大家学习,SpringBoot 框架也会教大家搭建,在最后,会通过讲解NLP基础知识,并且使用实战案例对影评信息进行情感分析。
通过本教程的学习,你将收货如下知识点:
- Spark Core 编程
- Hive 基础知识
- Mysql 的读写
- SpringBoot 框架的使用
- 可视化工具 Echarts 和 d3-Cloud
- 数据挖掘基础
- NLP 中文分词
对于了解Java或者Scala等知识的同学,基本可以无障碍学习本教程了。