突然看到以前的总结,好怀念,这里就贴出来打击看一下吧
Spark知识总结
RDD
什么是RDD ?
(Resilient Distributed Datasets)弹性分布式数据集
弹性
- RDD可以在存储在内存和磁盘之间,并且自动或者手动切换
- RDD具有良好的容错性(即RDD可以通过血统转化为其他RDD)
- Task如果失败,会进行特定次数的重试(default 4)
- Stage如果失败会就行特定次数的重试
- RDD可以存储任意类型的数据
- RDD的分区数目可以自行设定
分布式
- RDD可以存储在多台主机的内存或者磁盘之上
数据集
- RDD是数据集合的抽象,从外部看RDD就是封装之后的可容错的数据集
RDD的特性
- A list of partitioner 也就是说RDD有很多个分区
- A function for computing each split 每一个切片(分区)使用同一个函数计算
- A list of depedencies on other RDDs 一组对其他RDD的依赖 即RDD具有血统
- Optionally, a Partitioner for key-value RDDs 对于Key-Value类型的RDD存在一个partitioner(划分器)目前只有HashPartitioner 和RangeRartitioner
- Optionally, a list of preferred locations to compute each split on 对于每一个切片(分区)都会偏向于选择就近的进行计算
RDD的来源
- 使用程序中的集合来创建RDD
- 使用本地文件系统创建RDD
- 从HDFS创建RDD
- 从数据库(DB ==包括nosql数据库==)创建RDD
- 从数据流创建RDD
- 从s3创建RDD
RDD的转化算子
RDD既然是数据集,就可以对数据进行存储,当然了它也有一些算子可以对存储的数据进行计算。他的算子分为两类
- Transformation 算子
- Action 算子
两者的区别是Transformation算子是lazy的,调用了这个算子之后它不会马上的执行,而是在Action算子调用之后才开始执行
Transformation算子
- map(func)
- filter(func)
- flatMap(func)
- sample(withReplacement,frca,seed)
- union(otherDataSet)
- groupByKey([numTask])
- reduceByKey(func,[numTasks])
- join([numtasks])
- groupWith(othorDataSet,[numTasks])
- cartesian(otherDataSet)
Action算子
- reduce(func)
- collect()
- take(n)
- fist()
- saveAsTextFile(path)
- saveAsSequenceFile(path)
- foreach(func)