spark簡單學習

爲啥學spark

中間結果輸出:基於MapReduce的計算引擎通常會將中間結果輸出到磁盤上,進行存儲和容錯。出於任務管道承接的,考慮,當一些查詢翻譯到MapReduce任務時,往往會產生多個Stage,而這些串聯的Stage又依賴於底層文件系統(如HDFS)來存儲每一個Stage的輸出結果

SparkMapReduce的替代方案,而且兼容HDFSHive,可融入Hadoop的生態系統,以彌補MapReduce的不足。

spark  ----->   彌補Mapreduce不足(產生多個Stage)(具有快,易用,通用,兼容性)

spark比mapreduce更加靈活,計算模型不限於Map和Reduce。存儲是在內存中,而不是本地磁盤。能夠減少IO開銷。MapReduce計算中間結果,保存在磁盤中,Hadoop低層實現備份機制,保證數據容錯;SparkRDD實現基於Lineage的容錯機制和設置檢查點方式的容錯機制。

 

1.Spark環境部署

①將包傳到文件夾中,解壓,改名   輸入:tar -zxvf spark-2.3.2-bin-hadoop2.7.tgz -C /export/servers/              改名:mv spark-2.3.2-bin-hadoop2.7/ spark(到指定文件夾下改名哈)

將spark-env.sh.template配置模板文件複製一份並命名爲spark-env.sh           修改spark-env.sh文件,在該文件添加以下內容(根據自己的配置進行修改)vim spark-env.sh

 

 ③複製slaves.template文件,並重命名爲slaves,編輯slaves配置文件,主要是指定Spark集羣中的從節點IP,由於在hosts文件中已經配置了IP和主機名的映射關係,因此直接使用主機名代替IP

 

④分發文件  修改完成配置文件後,將spark目錄分發至hadoop02和hadoop03節點  輸入:scp -r /export/servers/spark/ hadoop03:/export/servers/
⑤啓動Spark集羣(在sbin下啓動)

 

 

 

 

2.第一個案例

①提交SparkPi程序。

 

 

 ②PI值計算成功

 

 

 

 ③Spark-Shell是一個強大的交互式數據分析工具,初學者可以很好的使用它來學習相關API。運行Spark-Shell命令。在spark/bin目錄中,執行下列命令進入Spark-Shell交互環境: 

 

 進入普通spark集羣                  bin/spark-shell --master spark://hadoop01:7077

 

 現在我們使用scala語言開發單詞計數的spark程序   

首先在hdfs的/spark/input路徑下建立一個words.txt

 

 整合spark和hdfs  先修改spark-env.sh配置文件  之後重啓集羣服務以及重啓spark集羣服務

再次啓動交互式界面  bin/spark-shell --master local[2]

spark-shell 本省就是一個driver,它會初始化一個SparkContext對象爲sc,用戶可以直接調用。編寫scala代碼實現單詞計數

 

3.第二個案例(求平均值)

①建一個數組,可以看成是科目和分數的對偶

 

 

 ②再建一個相似的數組

 

 ③再建一個,可以看成三個學生

 

 ④三個合成一個

 

 ⑤按照第一個分組

 

 ⑥求和除以長度  的平均值

 

4.第三個案例(重要函數操作過程) 

①創建一個lines

 

 ②按照空格分割

 

 ③合成一個

 

 ④每個單詞後面給個1

 

 ⑤分組分開

 

 ⑥計算得

 

 

注第2到第5 可以直接通過這句話得到  val grouped = lines.flatMap(_.split(" ")).map((_,1)).groupBy(_._1)

 

 

 

 

 

 nice!

終於成了,就離譜!

 

 

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