spark笔记:常见的RDD操作(python)

参考图灵程序设计丛书,Spark快速大数据分析一书

1.从外部读取数据创建RDD

lines = sc.textFile("/path/to/README.md")

2.转化操作和行动操作

转化操作:返回一个新的RDD操作,如map()和fliter(),返回值是RDD。所有的转化操作都是惰性求职,在被调用行动操作之前不会开始计算。

行动操作:向驱动器程序返回结果或者把结果写入外部系统的操作,会触发实际的计算,比如count()和first(),返回值是其他数据类型。

3.对单个RDD的转化操作

对1个数据为{1,2,3,3}的RDD进行操作

nums = sc.parallelize([1,2,3,3])

(1) map():对每个元素运用一个函数,返回值构成新的RDD

out =  nums.map(lambda x: x+1)

结果{2,3,4,4}

(2) fliter():返回一个传给fliter()的函数元素构成的RDD

out = nums.fliter(lambda x: x != 1)

结果{2,3,3}

(3) distinct():去重

out = nums.distinct()

结果{1,2,3}

(4)sample(withRepalcement,fraction,[seed]) :采样,以及是否替换

out = nums.sample(false,0.5)

结果不确定

4.对两个RDD的转化操作

两个RDD分别为nums{1,2,3}和other{3,4,5}

(1)union():生成1个RDD包含2个RDD的所有元素

out = nums.union(other)

结果{1,2,3,3,4,5}

(2)intersection():求两个RDD共同元素的RDD

out = nums.intersection(other)

结果{3}

(3)intersection():求两个RDD共同元素的RDD

out = nums.intersection(other)

结果{3}

(4)substract():移除其中另一个RDD的内容

out = nums.substract(other)

结果{1,2}

(5)cartesian():两个RDD的笛卡尔乘积

out = nums.cartesian(other)

结果{(1,3),(1,4),……(3,5)}

5.对一个RDD的基本动作操作

对1个数据为{1,2,3,3}的RDD进行操作

(1)collect():返回RDD中的所有元素

nums.collect()  #最好不要用,除非你的RDD非常小

结果{1,2,3,3}

(2)count():RDD中的元素个数

nums.count()  

结果 4

(3)countbyvalue():RDD中各个元素及其出现的次数

nums.countbyvalue()

结果{(1,1),(2,1),(3,2)}

(4)top(2):RDD中最前面的两个元素
nums.top(2)

结果{1,2}

(5)reduce(func):并行整合RDD中所有的数据(如sum)

nums.reduce(lambda x,y: x+y)

结果9

(6)aggregate(func):和reduce相似,通常返回不同类型的函数

(7)foreach(func):对RDD每个元素使用给定的元素

你可能感兴趣的:(spark笔记:常见的RDD操作(python))