- Apache Spark 是一种基于内存的快速、通用、可扩展的大数据技计算引擎
- spark是一站式解决发难,集批处理,实时流处理,交互式查询、图计算与机器学习于一体.
应用场景 - 批处理可用于ETL(抽取、转换、加载)
- 机器学习可用于自动批判淘宝的买家评论是好评还是差评
- 交互式分析可用于查询Hive数据仓库
- 流处理可用于页面点击流分析,推荐系统,舆情分析等实时业务。
特点: - 轻(使用Scala)
- 快(其余内存计算)
- 灵
- 巧(巧妙的借力现有大数据组件)
Spark VS MapReduce
1.1、Spark核心概念
- RDD(弹性分布式数据集),是一个只读的,可分区的分布式数据集
- RDD默认存储在内存,当内存不足时,溢写到磁盘
- RDD数据以分区的形式在集群中存储
- RDD具有血统机制,发生数据丢失时,可快速进行数据恢复
1.2、RDD的依赖关系
1.3宽窄依赖的区别-算子(算子就是函数、方法)
1.3.1容错性:如果某个节点故障。窄依赖只要重算和子RDD分区对应的父RDD分区即可。宽依赖,在极端情况下,所有父RDD分区要重新计算.
1.3.2传输性:
1.4、RDD的阶段(stage)划分
1.5、RDD操作类型
Spark中的操作大致可以分为创建操作、转换操作、控制操作、行为操作 - 创建操作:1、从外部存储创建(textFile[路径]),2、从并行集合创建parirallize
- 转换操作:将RDD通过一定的操作转变成新的RDD,RDD的转换操作是惰性操作(转换不会真正的执行,只有遇到Action行动算子操作才会从头到尾真正的执行。惰性操作只是记录了转换的过程,没有真正的计算)
- 控制操作:进行RDD持久化,让RDD按不同的存储策略保存在磁盘或者内存中
- 行动操作:可以出发spark运行的操作。spark中行动操作分为两类:一类操作输出计算结果,另一类将RDD保存到外部文件系统或者数据库中
1.6、Dataframe概念 - 与RDD类似,DateFrme也是一个不可变弹性分布式数据集。除了数据以外还记录数据的结构信息,即schema(类似于mysql表的字段和字段类型)。类似二维表格
- Dateframe的查询计划可以通过 Spar Catalyst Optimiser进行优化,即使Spark经验并不丰富,用Dateframe写得程序也可以尽量被转化为高效的形式予以执行
1.7、Dataframe概念 - Dataframe是Dateset的特例,Dataframe=Datase[Row],所以可以通过as方法将Dateframe转换Dateset。ROW 是一个通用的类型,所有的表结构信息都用Row来表示
- DataSet是强类型的,可以有Datase[Car]等
1.8、RDD,Dataframe,Dataframe表现形式的区别
2.1、SparkSQL概述
2.2、StructuredSteaming概述
2.3、SparkStreaming概述



