spark系列博客-(1)初識spark

說明:本文是我從spark官方文檔上翻譯總結+個人理解的,如有不恰當和理解偏差的地方,請大家指出,一起交流學習!

翻譯來源 http://spark.apache.org/docs/latest/programming-guide.html

1.每個spark應用均包含一個drive program作爲當前應用的入口,每個spark應用的核心抽象就是RDDresilient distributed dataset,用於並行操作集羣上的節點的被劃分的元素集合)。

2.RDD被創建的兩種方式

(1)由drive program內部存在的集合創建

(2)由外部文件系統創建(如:hdfs上的file

3.Spark中的共享變量

說明:Spark中的共享變量常用於並行操作中,在應用中,一個變量需要在一個任務中或任務與drive program之間被共享。

Spark中提供了兩種類型的共享變量

(1)broadcast variables(在集羣的所有節點上緩存到內存中的值)

(2)accumulators(計數操作,如:counterssums

4.spark應用程序中的核心對象SparkContext

SparkContextspark應用程序的上下文環境,用於告訴應用如何去訪問集羣,如何對集羣中的節點進行操作。

創建方法:new SparkContext(new SparkConf().setAppName(appName).setMaster(master))

說明:appName參數是用於顯示在webUI上的當前spark應用的名字,master是部署運行當前應用程序的節點url。在創建一個新的SparkContext對象之前一定要將當前active狀態的SparkContext對象stop()

5.Spark-shell

Spark-shellspark包內置的一個交互式shell,當在spark安裝目錄下執行./spark-shell命令後,SparkContext對象自動創建(創建後對象的引用爲sc),即可直接使用。

6.RDD操作

RDD支持兩種類型的操作

(1)transformations:轉換操作,用於創建新的數據集。如:mapfilter操作

(2)actions:響應操作,計算數據集後向drive program返回值。如:reducecollect操作

說明:

(1)spark中所有的轉換transformations操作均爲lazy的(當採取transformations操作時不會立即計算,只是僅僅記住自己需要做的事情,除非當一個action操作發生時。這樣的設計對於應用的運行效率會有相當大的提升)

(2)Spark默認的是:當在同一個RDD執行action操作時,每次被transformationsRDD可能會被重計算,因此,爲了提升效率,spark中提供了緩存機制(利用cache方法,如:rdd.cache)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章