開源軟件迭代較慢
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命令
然後先全路徑打開spark
- 從文件系統中加載數據創建RDD
(1)從本地文件系統中加載數據創建RDD
先新建目錄 & word.txt文檔
(2)從分佈式文件系統HDFS中加載數據
創建刪除文件夾(需要加-r,刪除文件不需要加-r)
輸入 “hadoop fs -ls /”命令查看hadoop分佈式文件系統HDFS中的文件夾
或者進入http://master:50070/explorer.html#/ 網址直接查看文件夾
輸入val hdfsfile = sc.textFile(“hdfs://master:9000/testSpark1/hdfsword.txt”) 命令
因爲惰性計算,所以還要輸入 hdfsfile.count() 開始執行,截圖如下:
2. 通過並行集合(數組)創建RDD
可以調用SparkContext的parallelize方法,在Driver中一個已經存在的集合(數組)上創建。
或者,也可以從列表中創建:
3. 常用的RDD轉換操作API
(1) filter(func)
(2) map(func)
map(func)操作將每個元素傳遞到函數func中,並將結果返回爲一個新的數據集
(3) flatMap(func)
(4) groupByKey()
groupByKey()應用於(K,V)鍵值對的數據集時,返回一個新的(K, Iterable)形式的數據集
(5) reduceByKey(func)
reduceByKey(func)應用於(K,V)鍵值對的數據集時,返回一個新的(K, V)形式的數據集,其中的每個值是將每個key傳遞到函數func中進行聚合後得到的結果