开始新的东西,其实很多操作在第二篇的时候就有所介绍啦。在这里继续学习一遍加深一下印象。
1关于RDD
(1) RDD-----Resilient Distributed Dataset,弹性分布式数据集。这些元素在多个节点上运行和操作,以便在集群上进行并行处理。
(2)RDD是弹性得。
比如map操作,可以拆分成对数据块得直接计算而不涉及其他节点。这样得操作只是在一个节点上面直接得操作,不会影响RDD得操作。但是也有比如groupBy,在不完全知道每个key得分布得时候,必须遍历RDD所有得数据块,然后将相同得key汇聚。
(2)转换----->行动
转换操作比如Fileter groupBy,map等
行动操作比如collect
2 例子
1 # coding:utf-8 2 from pyspark import SparkContext, SparkConf 3 from operator import add 4 sc = SparkContext() 5 6 words = sc.parallelize ( 7 ["scala", 8 "java", 9 "hadoop", 10 "spark", 11 "akka", 12 "spark vs hadoop", 13 "pyspark", 14 "pyspark and spark"] 15 ) 16 #输出rdd元素个数count 17 counts = words.count() 18 print counts 19 20 #输出所有得元素collect 21 print 'elements in RDD->%s'%(words.collect()) 22 23 #输出满足条件得元素foreach 24 def f(x):print(x) 25 fore = words.foreach(f) 26 27 #返回新的RDD 满足相应得条件 filter 28 words_filter = words.filter(lambda x: 'spark' in x).collect() 29 print words_filter 30 #返回新的RDD 满足相应得条件 map value都为1 31 words_map = words.map(lambda x: (x,1)) 32 33 #reduce 引入add 34 nums = sc.parallelize([1,2,3,4,5]) 35 adding = nums.reduce(add)#15 36 37 #cache 持久RDD 判断是否是持久 38 print words.persist().is_cached
好了 加油!