標籤:
首先,關於spark運算元的分類,詳細見http://www.cnblogs.com/zlslch/p/5723857.html
1、Transformation 變換/轉換運算元
1、map運算元
2、flatMap運算元
3、mapPartitions運算元
4、union運算元
5、cartesian運算元
6、grouBy運算元
7、filter運算元
8、sample運算元
9、cache運算元
10、persist運算元
11、mapValues運算元
12、combineByKey運算元
13、reduceByKey運算元
14、join運算元
2、Action 行動運算元
1、foreach運算元
2、saveAsTextFile運算元
3、collect運算元
4、count算
簡單地總結:
通過Action運算元,觸發Spark提交作業。
通過Cache運算元,將資料緩衝到記憶體。
圖1 Spark運算元和資料空間
描述了Spark的輸入、 運行轉換、 輸出。 在運行轉換中通過運算元對RDD進行轉換。運算元是RDD中定義的函數,可以對RDD中的資料進行轉換和操作。
1)輸入:在Spark程式運行中,資料從外部資料空間(如分布式儲存:textFile讀取HDFS等,parallelize方法輸入Scala集合或資料)輸入Spark,資料進入Spark運行時資料空間,轉化為Spark中的資料區塊,通過BlockManager進行管理。
2)運行:在Spark資料輸入形成RDD後便可以通過變換運算元,如fliter等,對資料進行作並將RDD轉化為新的RDD,通過Action運算元,觸發Spark提交作業。 如果資料需要複用,可以通過Cache運算元,將資料緩衝到記憶體。
3)輸出:程式運行結束資料會輸出Spark運行時空間,儲存到分布式儲存中(如saveAsTextFile輸出到HDFS),或Scala資料或集合中(collect輸出到Scala集合,count返回Scala int型資料)。Spark的核心資料模型是RDD,但RDD是個抽象類別,具體由各子類實現,如MappedRDD、 ShuffledRDD等子類。 Spark將常用的大資料操作都轉化成為RDD的子類。
Apache Spark的運算元的作用