1、简介
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。
2、特性
只读:
RDD在创建之后只允许读操作,不允许写操作,每个计算操作都是产生新的RDD
分区:
RDD会把其中的元素进行partition分区,计算是以分区为单位进行
容错:
相比其他系统的细颗粒度的内存数据更新级别的备份或者LOG机制,RDD的血缘关系记录的是粗颗粒度的特定数据Transformation操作(如filter、map、join等)行为。当这个RDD的部分分区数据丢失时,它可以通过Lineage获取足够的信息来重新运算和恢复丢失的数据分区。因为这种粗颗粒的数据模型,限制了Spark的运用场合,所以Spark并不适用于所有高性能要求的场景,但同时相比细颗粒度的数据模型,也带来了性能的提升。
RDD依赖:
RDD一般由读取文件或者并行化数组产生,通过每次的transformation操作都会产生新的一个RDD,然后RDD之间的依赖关系称为血缘,子RDD通过父RDD和算子就能够得到。
缓存:
RDD可以通过persist方法进行缓存操作,把RDD放到每个worker上的executor上,这样该RDD就可以不用传给每个task,增加计算速度明显
3、spark代码运行(推荐)
1)idea等工具运行spark代码,通过maven构建项目引入对应gav
2)spark-shell交互工具,spark的bin目录:./bin/spark-shell --master local[4]
可以通过ui进行监控,启动日志可以看到监听端口
3)spark-submit提交,把本地开发好的项目打成jar包,然后通过spark-submit命令运行
4、创建RDD
其中sc为SparkContext对象