一:寬窄依賴的概念
提起spark中涉及到的rdd,那麼我們也會很容易的想到的問題是,rdd的一系列操作轉化操作,轉化操作其實就是將乙個rdd轉化為另乙個rdd,那麼在產生新的rdd和舊的rdd的關係就屬於依賴關係,而rdd之間的依賴關係可以分為寬依賴和窄依賴兩種依賴關係。
窄依賴:具體的含義是指父rdd和子rdd之間的partition之間屬於一對一的關係。也可以認為乙個父rdd的partition對應乙個子rdd。並且還有乙個特性是父rdd與子rdd之間沒有發生shuffle。
寬依賴:具體的含義是指,父rdd與子rdd之間的partition之間是一對多的關係。與窄依賴關係不同的是,父rdd與子rdd之間則會產生shuffle。
二:stage
說起rdd之間的依賴關係之後,自然便會講到stage了,因為stage的劃分便是根據依賴關係劃分的
stage的概念:spark任務根據rdd之間的依賴關係,首先會形成乙個有向無環圖dag,dag會被提交給dagscheduler任務排程器,dagscheduler會將dag根據rdd之間的寬窄依賴關係劃分為多個stage。劃分的條件是,只要遇到寬依賴就會被劃分為乙個stage,在每
個stage中會有乙個或者多個task。並且這些任務會以一系列的taskset提交給taskscheduler執行。
這裡提到了一些概念:
task(任務):單個分割槽資料集上的最小處理流程單元
taskset(任務集):有一系列的關聯的,但是互相之間沒有發生shuffle的task組成的任務集
stage(排程階段):乙個任務集對應的排程階段
job(作業):由乙個rdd的action操作生成的乙個或者多個排程階段組成的一次計算作業
他們之間的關係如下圖所示:
Spark 寬窄依賴
面試時被問到spark rdd的寬窄依賴,雖然問題很簡單,但是答得很不好。還是應該整理一下描述,這樣面試才能答得更好。窄依賴就是指父rdd的每個分割槽只被乙個子rdd分割槽使用,子rdd分割槽通常只對應常數個父rdd分割槽,如下圖所示 其中每個小方塊代表乙個rdd partition 窄依賴有分為兩...
Spark中的寬窄依賴細述
spark中rdd的高效與dag圖有著莫大的關係,在dag排程中需要對計算過程劃分stage,而劃分依據就是rdd之間的依賴關係。針對不同的轉換函式,rdd之間的依賴關係分類窄依賴 narrow dependency 和寬依賴 wide dependency,也稱 shuffle dependenc...
資料庫的部分依賴,完全依賴,傳遞依賴以及三種正規化
舉個例子 通過ab能得出c,通過a也能得出c,通過b也能得出c,那麼說c部分依賴於ab。舉個例子 通過ab能得出c,但是ab單獨得不出c,那麼說c完全依賴於ab.舉個例子 通過a得到b,通過b得到c,但是c得不到b,b得不到a,那麼成c傳遞依賴於a 1 第一正規化 1nf 在任何乙個關聯式資料庫中,...