RDD基础
RDD是什么?
RDD是不可变的分布式对象集合,每个RDD被分为多个分区,分区运行在集群的不同节点上
创建RDD?
两种方式:1 读取外部数据集 2 在驱动器程序里并行化对象集合
val lines = sc.textFile("/usr/local/spark/README.md")
val lines = sc.parallelize(List("pandas", "i like pandas"))
RDD支持操作
惰性计算:对RDD调用转化操作,并不会立即执行,会记录下所要执行的转化操作,形成转化操作链,当调用行动操作根据需要执行转化操作。
行动操作时,Spark的RDD会在每次进行行动操作时从头开始重新计算,如果想要在多个行动操作中重用一个RDD,可以使用持久化RDD.persist()
1 转化操作返回一个新的RDD
> Spark使用谱系图记录RDD之间的依赖关系,按需计算RDD,也可以在持久化的RDD丢失数据时重新计算恢复数据
2 行动操作进行实际的计算
> 将结果写到外部系统
> 将结果写回驱动器程序
区别在于转化操作只会惰性计算RDD
转化操作
行动操作