- RDD是什么
RDD英文单词全称为Resilient Distributed Datase,叫做弹性分布式数据集,是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个不可变、可分区、里面的元素可并行计算的集合。不可变、可分区和可并行计算下面再详细叙述。
- RDD特点
(1)分区
spark可以把读进来的数据装进RDD里面,因为spark支持集群方式部署的,spark的Driver会把RDD分割成小的任务给集群的Executor去执行。
(2)只读
RDD是只读的,不能修改的。要想改变RDD中的数据,只能在现有的RDD基础上创建新的RDD,这个和Java中的String类似。由原来的RDD转换为另一个RDD可以通过丰富的算子进行操作。如map,filter,flatMate,reduceByKey等等…RDD的操作算子分为两类,一类叫做transformations(转换算子),它是用来将RDD进行转化,构建RDD的血缘关系(血缘关系下面会详细阐述);另一类叫做actions(行动ing算子),它是用来触发RDD的计算,得到RDD的相关计算结果或者将RDD保存的文件系统中。
(3)依赖
spark程序处理数据的流程就是通过对RDD的一系列操作最后达到处理数据的目的。上面提到因为RDD不能修改,只能通过生成新的RDD来对RDD进行操作,那么新的RDD就依赖旧的RDD。为了更方便理解,以下以spark的hello world为例进行说明:
import org.apache.spark.rdd.RDD
import org.apache.spark.{
SparkConf, SparkContext}
object WorldCount {
def