初始spark 三 之寬窄依賴以及stage的劃分

2021-10-05 09:24:37 字數 854 閱讀 5035

一:寬窄依賴的概念

提起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 在任何乙個關聯式資料庫中,...