• 学会使用Spark中创建RDD的两种方法
  • 结合本文内容解释“不可变性”
  • 能将Spark程序翻译成“变换”和“行为”的流水线
  • 列出创建一个Spark程序的步骤

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。