<IMG alt=http://static.oschina.net/uploads/space/2015/0109/211004_Nkr7_76720.jpg src="http://static.oschina.net/uploads/space/2015/0109/211004_Nkr7_76720.jpg" _src="http://static.oschina.net/uploads/space/2015/0109/211004_Nkr7_76720.jpg">html
RDD的建立:apache
(SparkContext) sc.parallelize(collection) //將一個集合轉換成RDD數組
sc.textFile("path..") //讀取一個文件並轉換成RDD分佈式
延遲執行,一個RDD經過該操做產生的新的RDD時不會當即執行,只有等到Action操做纔會真正執行。ide
map(func):對調用map的RDD數據集中的每一個element都使用func,而後返回一個新的RDD,這個返回的數據集是分佈式的數據集 示例: var list = List(1,2,3,4,5,6); //定義一個List集合 //對於調用map的list而言,num表示list中每個element,每一個element都*2,num能夠理解爲一個變量名 list.map(num=>num*2) 結果:List(2,4,6,8,10,12) //list.map(num=>num*2)能夠當作是集合中每一個element*2
filter(func):對調用filter的RDD數據集中的每一個元素都使用func,而後返回一個包含使func爲true的元素構成的RDD 示例: var list = List(1,2,3,4,5,6); //定義一個List集合 //對於調用filter的list而言,num表示list中每個element,篩選每一個符合>2條件的element list.filter(num=>num>2) //參數必須是一個Boolean 打印結果:List[Int] = List(3, 4, 5, 6)
flatMap(func):和map差很少,可是flatMap生成的是多個結果 示例: // 定義一個元素爲String的集合 var strList = List("hello world","hello xm","hello xh","hello , Im fine","hello how are you?") // 將每一個element切分紅多個字段,flatMap每一個參與計算的element必須返回多個結果或者一個數組,例如返回的結果 // 能夠這樣:List(Array(...),Array(...),...) strList.flatMap(stsr=>str.split(" ")) 打印結果:List(hello, world, hello, xm, hello, xh, hello, ,, Im, fine, hello, how, are, you?)
groupByKey():將相同key的value進行分組 groupByReduce():將相同key的value進行合併計算 union:將兩個RDD聚合,例如:RDD1->(1,2,3),RDD2->(1,2,3),RDD1 union RDD2 -> (1,2,3,1,2,3) join:將兩個RDD取笛卡爾積 SortByKey(boolean):按照key進行排序,true爲降序,false爲升序,若是想將value進行排序,能夠將key和value位置互換,互換操做:map(x=>(x._2,x._1))
提交Spark做業,當Action時,Transformation類型的操做纔會真正執行計算操做,而後產生最終結果輸出。ui
cache:將結果放到內存 count:統計element的數量 collect:返回一個數組結果 reduce:對全部的element進行合併 lookup:針對某個key查看value save:將結果保存到磁盤
其餘的一些操做能夠參考官方文檔:http://spark.apache.org/docs/latest/programming-guide.html#transformationsspa