sparkcore和sparkSql學習

sparkcore:基本數據抽象是rdd

RDD:彈性分佈式數據集  分佈存儲,分散在各個節點上,便於並行對RDD的數據進行並行計算
特點:
	1.RDD是隻可讀的,一旦生成,內容就無法修改
	2.RDD可以指定緩存在內存中。一般計算都是流水式生成、使用RDD,新的RDD生成後,舊的RDD不再使用,並被java虛擬機回收掉。當後續有多個計算依賴於某個RDD時,可以讓這個RDD緩存到內存中,避免重複計算。
	3.RDD可以通過計算得到,RDD的可靠性不是靠複製實現的,而是通過記錄足夠的計算過程,在需要重新從頭或者某個鏡像重新計算來恢復的。

在這裏插入圖片描述
RDD的依賴

1.窄依賴:依賴上級RDD的部分分區
使用窄依賴時,可以精確知道依賴的上級RDD的分區。一般情況下,會選擇與自己在同一節點的上級RDD分區,這樣計算在同一節點上,沒有IO開銷,常見的map,filter,flatmap

2.shuffle依賴:依賴上級RDD的所有分區。以shuffle依賴爲分隔,Task被分成Stage,方便計算時的管理

3.RDD維護依賴關係和計算方法保證重新計算來恢復RDD。
問題:當依賴鏈太長,通過恢復的代價太大?
Spark提供一種檢查點機制,對於依賴鏈太長的計算,對中間結果保存一份快照,這樣就不需要從頭開始計算了。

Shuffle

1.依賴關係是寬依賴,即依賴前一個RDD的所有分區。將相同的key但是分佈在不同節點上的成員聚合到一個節點上,重組的過程就是shuffle。

2.shuffle操作的結果就是一次調度的Stage的結果,而一次Stage包含多個Task

3.shuffle使用本地磁盤目錄有 spark.local.dir 屬性指定

sparkSql
底層基本數據抽象是dataframe(新版本是dataset[ROW]),就是Spark生態系統中一個開源的數據倉庫組件,可以認爲是Hive在Spark的實現,用來存儲歷史數據,做OLAP、日誌分析、數據挖掘、機器學習等等
在這裏插入圖片描述

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