您的位置:首页 > 编程语言

Spark Core :RDD与Spark流水线编程模型

2018-01-10 10:08 337 查看
学会使用Spark中创建RDD的两种方法
列出创建Spark程序的步骤
结合本文内容解释“不可变性”
能将Spark程序翻译成“变换”和“行为”的流水线

RDD的创建方法

Driver Program 是Spark程序的起点,它把RDD分发到集群并保证RDD的转化和动作的执行。Driver Program 中包含一个Spark Context,而每个Work Node中包含一个Spark Executor。RDD既可以从文件或集群中创建,也可以从数据结构中创建。

从文件创建时,使用sc.textFile()方法,如

#从hdfs内的文件创建
lines = sc.textFile("hdfs:/root/words.txt")
#从本地文件创建
lines = sc.textFile("/root/words.txt")


从数据结构创建时,使用sc.parallelize()方法,如

#从list创建
lines = sc.parallelize(["big","data"])

#并发地将[0,1,2,3...9]分割成三部分
numbers = sc.parallelize(range(10),3)
#结果为[0,1,2],[3,4,5],[6,7,8,9]
#合并
number.collect()
#结果为[0,1,2,3...9]



流水线编程模型

Spark中有两种操作,Transformation和Action。Spark程序有一种叫lazy evaluation的执行机制,即并不立即执行Transformation,等到一个Action执行时再一并执行Transformation。在前一篇大数据处理流水线中有提到一些常见的Transformation,如下图中的filter、map和reduce。相应的,collect和saveAsTextFile都是Action。










 RDD的不可变性immutable

immutable意味着RDD是不可变的,只读的。前面提到Spark会追踪每个文件分片的历史,当某一个文件分片损坏或丢失时,Spark会根据该文件分片所需的文件重新计算、创建该分片。
Immutable对追踪应用到数据集上的所有操作很有必要,它提供了维护一个RDD的线性链的能力。

结合本文内容解释“不可变性”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐