Spark菜鸟的进阶之路之RDD编程一

RDD基础

1、Spark中RDD就是一个不可变的分布式对象集合。每个RDD都被分为多个分区,这些分区运行在集群中不同的节点上。

2、用户可以用两种方法创建RDD:读取一个外部数据集,或在驱动器程序里分发驱动器程序中的对象集合


3、RDD支持两种操作,转化操作(transformation)和行动操作(action)。


转化操作会由一个RDD产生一个新的RDD


行动操作会对RDD计算出一个结果,并把结果返回到驱动器程序中,或把结果存储到外部存储系统(如HDFS中)


4、transformation和action的区别在于Spark计算RDD的方式不同。虽然你可以在任何时候定义新的RDD,但Spark只会惰性计算这些RDD。(只有第一次在一个action中用到时才会重新计算)


5、默认情况下,Spark的RDD会在你每次对它们进行action操作时重新计算。如果想在多个action操作中重用同一个RDD,可以使用RDD.persist()让Spark把这个RDD缓存下来。


在第一次对持久化的RDD计算之后,Spark会把RDD的内容保存在内存中(以分区的方式存储到集群的各个机器上),这样在之后的操作当中,就可以重用这些数据了。(也可以把RDD缓存到磁盘而不是内存当中)


6、在实际操作当中,你会经常用persist()来把数据的一部分读取到内存,并反复查询这些数据。


7、总的来说,每隔Spark程序或者shell会话,都会按如下方式工作


(1)从外部数据创建输入RDD。


(2)使用诸如filter() 这样的transformation操作对RDD进行转化,以定义新的RDD

(3)告诉Spark对需要被重用的中间结果RDD执行persist() 操作

(4)使用action操作来触发一次并行计算,Spark会对计算进行优化后再执行

你可能感兴趣的:(Spark菜鸟的进阶之路之RDD编程一)