该系列spark学习笔记基于Python Spark.
RDD(弹性分布式数据集)是一个不可变的分布式对象集合,可以包含Python、Java、Scala中任意类型的对象,和用户自己定义的对象。
创建RDD有两种方式:1、读取外部数据集。2、在驱动器程序中对一个集合进行并行化。最简单的方式就是把程序中一个已经存在的集合传给SparkContext的parallelize()方法。这种方法适合在shell中快速创建RDD。
1:lines = sc.textFile(“D:/text”)
2:lines = sc.parallelize([“pandas”,”i like pandas”])
RDD编程支持两种操作:转化操作和行动操作。转化操作会由一个RDD生产一个新的RDD。行动操作会对RDD计算出一个结果,或把结果写入外部系统的操作,会实际触发的计算。转化操作会被惰性地执行,只有第一次在一个行动操作中用到的RDD才会被真正计算。如:转化操作filter会过滤RDD但是只有在执行行动操作后filter才会被真正的执行。
示例:
pythonLines = lines.filter(lambda line:”Python” in line)
pythonLines.first()
filter操作只有在first操作执行的时候才会被执行。
区分两种操作的方式可以通过函数的返回值类型:转化操作返回的是RDD,行动操作返回的是其他的数据类型。