開始新的東西,其實很多操作在第二篇的時候就有所介紹啦。在這里繼續學習一遍加深一下印象。
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
好了 加油!