大數據 - 第十一課 : Spark惰性計算及簡單實踐

開源軟件迭代較慢

DAG:有向無環圖

Hadoop計算中間結果落到磁盤,內存佔用小
Spark惰性計算,遇到Action算子才執行,內存佔用較大,資源利用率較低

RDD:是Resillient Distributed Dataset(彈性分佈式數據集)的簡稱,是分佈式內存的一個抽象概念,提供了一種高度受限的共享內存模型
DAG:是Directed Acyclic Graph(有向無環圖)的簡稱,反映RDD之間的依賴關係
Executor:是運行在工作節點(WorkerNode)的一個進程,負責運行Task
Application:用戶編寫的Spark應用程序
Task:運行在Executor上的工作單元
Job:一個Job包含多個RDD及作用於相應RDD上的各種操作
Stage:是Job的基本調度單位,一個Job會分爲多組Task,每組Task被稱爲Stage,或者也被稱爲TaskSet,代表了一組關聯的、相互之間沒有Shuffle依賴關係的任務組成的任務集

開啓虛擬機,打開hadoop集羣 用start-all.sh命令
1

然後先全路徑打開spark

  1. 從文件系統中加載數據創建RDD
    (1)從本地文件系統中加載數據創建RDD
    先新建目錄 & word.txt文檔
    2
    3
    (2)從分佈式文件系統HDFS中加載數據
    創建刪除文件夾(需要加-r,刪除文件不需要加-r)
    4

輸入 “hadoop fs -ls /”命令查看hadoop分佈式文件系統HDFS中的文件夾
或者進入http://master:50070/explorer.html#/ 網址直接查看文件夾
5

輸入val hdfsfile = sc.textFile(“hdfs://master:9000/testSpark1/hdfsword.txt”) 命令
因爲惰性計算,所以還要輸入 hdfsfile.count() 開始執行,截圖如下:
6
2. 通過並行集合(數組)創建RDD
可以調用SparkContext的parallelize方法,在Driver中一個已經存在的集合(數組)上創建。
7
或者,也可以從列表中創建:

8
3. 常用的RDD轉換操作API
9
(1) filter(func)
11
(2) map(func)
map(func)操作將每個元素傳遞到函數func中,並將結果返回爲一個新的數據集
12
13

(3) flatMap(func)
14
(4) groupByKey()
groupByKey()應用於(K,V)鍵值對的數據集時,返回一個新的(K, Iterable)形式的數據集
(5) reduceByKey(func)
reduceByKey(func)應用於(K,V)鍵值對的數據集時,返回一個新的(K, V)形式的數據集,其中的每個值是將每個key傳遞到函數func中進行聚合後得到的結果

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