一、spark特点
1.基于内存计算spark要快mr100倍,基于磁盘计算spark要快mr10倍。
快的原因:
1. 基于内存计算
2. 计算和数据的分离
3. 基于DAGScheduler的计算划分
4. 只有一次的Shuffle输出操作
2.Spark提供超过80多个高阶算子函数,来支持对数据集的各种各样的计算,使用的时候,可 以 使用java、scala、python、R,非常灵活易用。
3.Spark程序可以再多个平台上面运行
二、spark概括
一个集成离线计算,实时计算,SQL查询,机器学习,图计算为一体的通用的计算框架。
三、RDD的概括
RDD就是一个不可变、可分区、里面元素可并行计算的弹性分布式数据集,不能携带数据, 携带的是元数据信息。
四、RDD的五大特性
1)A list of partitions
RDD由很多partition构成,在spark中,计算式,有多少partition就对应有多少个task来执行
2)A function for computing each split
对RDD做计算,相当于对RDD的每个split或partition做计算
3)A list of dependencies on other RDDs
RDD之间有依赖关系,可溯源
4)Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
如果RDD里面存的数据是key-value形式,则可以传递一个自定义的Partitioner进行重新分 区,比如可以按key的hash值分区
5)Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)
最优的位置去计算,也就是数据的本地性。
五、RDD依赖关系
RDD依赖关系分为两种:一种是窄依赖,一种是宽依赖
窄依赖:父RDD当中的一个分区只能被子RDD当中一个分区所依赖
宽依赖:父RDD当中的一个分区会被子RDD当中多个分区所依赖
六、算子介绍
Map:映射。针对列表当中的每一个元素进行操作,操作完成后返回一个新的列表,操作之 前是多少个元素,操作之后还是多少个元素,不会增加,不会减少。
七、Option
Option下面有两个子类,一个是Some,一个是None
Some:不为空
None:为空
八、分区方式
非key,value对的数据,分区方式为None;key,value对的数据默认分区方式也为None, 但是可以指定分区方式:一种是Hash,一种是Range。