---第1章 Spark介绍
- Spark是一个快速(扩充了流行的MapReduce计算模型,基于内存计算)且通用(容纳了其他分布式系统拥有的功能)的集群计算平台.
- Spark的组件:
- Spark Core:包含Spark的基本功能,比如任务调度,内存管理,容错机制.定义了RDD(弹性分布式数据集),提供了API来创建和操作RDD.
- Spark SQL:处理结构化数据的库.
- Spark Streaming:实时数据流组件.
- Mlib:包含通用机器学习功能的包.
- Graphx:处理图的库,并进行图的并行计算.
- Cluster Managers:集群管理.
- 相比Hadoop,Spark可以用于时效性要求高的场景和机器学习等领域.
---第2章 Spark的下载和安装
- Spark是Scala写的,运行在JVM上.
- Spark的shell能够处理分布在集群上的数据,把数据加载到节点的内存中.分为Python shells和Scala shells.
---第3章 开发第一个Spark程序
- WordCount:
- 创建一个Spark Context
- 加载数据
- 把每一行分割成单词
- 转换成pairs并且计数
- 打包程序-启动集群-提交任务-执行任务
---第4章 RDDs
-
Driver program包含程序main方法,RDDs的定义和操作.它管理很多executors(节点).
-
通过SparkContext访问Spark,它代表和一个集群的连接.在Shell中是自动创建好的.
- RDDs是弹性分布式数据集的简写.它们并行分布在整个集群中.不管整个数据集被切分成几块,都可以用它来访问整个数据集.一个RDD是一个不可改变的分布式集合对象.所有计算都是通过RDDs的创建,转换,操作完成的.一个RDD内部由很多partitions(分片)构成,每个分片包括一部分数据,是Spark并行处理的单元.RDD的创建可以用parelleilzie()或加载外部数据集.
- RDD基本操作:
- Transformations指的是从之前的RDD构建一个新RDD的过程.如map(接收函数,把函数应用到RDD,返回新RDD),filter(接收函数,返回只包含满足filter函数的元素的RDD),flatMap(对每个输入元素,输出多个输出元素).
- RDD支持数学集合计算,如并集,交集.
- Action是在RDD上计算出一个结果,把结果返回给driver program或保存在文件系统.如reduce(接收一个函数,作用在RDD两个类型相同的元素上,返回新元素),collect(遍历整个RDD,返回RDD的内容,注意内容需要单机内存能够容纳下),take(返回RDD的n个元素,返回结果无序),top(返回排序后的topN值),foreach(计算RDD中的每个元素,但不返回到本地).
- Spark维护着RDDs之间的依赖关系和创建关系,叫做血统关系图,可以用于计算RDD的需求和恢复丢失数据.
- 延迟计算:Spark对RDD的计算是在第一次使用action操作的时候.这可以减少数据的传输.
- 使用map()函数可以创建KeyValue对RDDs.KeyValue对RDDs的Transformations操作有reduceByKey(把相同key的结合),groupByKey(把相同的key的values分组),mapValues(对value进行map操作).
- combineByKey是最常用的基于key的聚合函数,接收四个参数.返回类型可以与输入类型不一样.它遍历元素的key,如果是新元素就使用createCombiner函数,如果已存在就使用mergeValue函数.合计每个分片结果的时候使用mergeCombiners函数.
转载于: https://www.cnblogs.com/limitlessun/p/9416404.html#_label1