这是我参与「第四届青训营 」笔记创作活动的第7天
一:大数据处理引擎Spark介绍
1.1大数据处理技术栈
1.2大数据处理链路
1.3开源大数据处理引擎
Batch:Hive,Hadoop,Spark
Streaming:Flink
OLAP:Presto,Impala,DORIS,ClickHouse
1.4Spark生态&特点
- Spark支持多种语言:SQL,Java/Scala,Python,R
- Spark支持多种数据源:内置DataSource:Text,Parquet/ORC,JSON/CSV,JDBC 自定义数据源:实现DataSource V1/V2 API,HBase/Mongo等
- Spark有丰富的API/算子:SparkCore-RDD,SparkSQL-DataFrame
二:SparkCore原理解析
2.1 RDD的概念
RDD五个要素
2.1.1 RDD的创建
内置RDD:
ShuffleRDD/HadoopRDD/JDBCRDD/KafkaRDD...
自定义RDD:
class CustomRDD(...)extends RDD{}
实现五要素对应函数
2.1.2 俩类算子
Transform算子:生成一个新的RDD
Action算子:触发Job提交
2.1.3 RDD依赖
RDD依赖:描述父子RDD依赖之间的依赖关系
窄依赖:父RDD的每个partition之多对应一个子RDD分区
NarrowDependency
OneToOneDependency
RangeDependency
PruneDependency
宽依赖:父RDD的每个partition都可能对应多个子RDD分区
shufflDependency
2.1.4 RDD执行流程
2.2 调度器
三:SparkSql原理解析
3.1Catalyst优化器
RBO
Batch执行策略:
Once-只执行一次
FixedPoint-重复执行,直到plan不再改变,或执行达到固定次数(默认100次)
CBO