spark並行度學習筆記

2021-09-10 02:09:11 字數 1148 閱讀 8204

spark是並行處理的大資料框架。所以,很多時候程式的執行速度,失敗原因都和並行度有關。那什麼是並行度?並行度怎麼設定?

我理解的有兩類並行度,一種時資源的並行度,由節點數(executor)和cpu數(core)決定的。另一種並行度就是task的資料,也就是partition大小。task又分為map時的task和reduce(shuffle)時的task.task的數目和很多因素有關,資源的總core數,spark.default.parallelism引數,spark.sql.shuffle.partitions引數,讀取資料源的型別,shuffle方法的第二個引數,repartition的數目等等。

如果task的數量多,能用的資源也多,那麼並行度自然就好。如果task的資料少,資源很多,有一定的浪費,但是也還好。如果task數目很多,但是資源少,那麼會執行完一批,再執行下一批。所以官方給出的建議是,這個task數目要是core總數的2-3倍為佳。如果core有多少task就有多少,那麼有些比較快的task執行完了,一些資源就會處於等待的狀態。

資料化rdd時,所形成的task資料是和hdfs裡的block有關,之前我以為乙個block會是乙個task,後來發現並不是這樣,task的數目是和inputsplit一一對應的,inputsplit是由若干個block合成的。讀資料時也是可以設定,textfile的第二個引數可以指定。如果既有引數也有inputsplit,會取兩者較大的。

在map類運算元這種窄依賴操作時,partition的數目不變和父rdd相同。

對於reduce操作,假設時*bykey,其partition數量依如下順序確定:1. 方法的第二個引數 > 2. spark.default.parallelism引數 > 3. 所有依賴的rdd中,partition最多的rdd的partition的數量。

關於spark並行度及其調整優化的理解就是這些,能力尚淺,理解有誤歡迎指正。對比實際的情況,特別是及其複雜的程式邏輯活著pyspark,有些stage的task劃分還是有些疑惑的。

Spark並行度設定總結

spark效能調優之合理設定並行度 1.spark的並行度指的是什麼?spark作業中,各個stage的task的數量,也就代表了spark作業在 各個階段stage的並行度!當分配完所能分配的最大資源了,然後對應資源去調節程式的並行度,如 果並行度沒有與資源相匹配,那麼導致你分配下去的資源都浪費掉...

Spark任務並行度分析

優化 spark 應用的乙個主要手段就是合理設定任務執行的並行度,盡可能的利用集群資源 從而提高執行效率。而影響 spark 並行度的因素主要有如下幾個 spark 應用缺省會為每乙個 rdd 分割槽建立乙個 task,所以輸入 rdd 的分割槽數直接影響待 分配的 task 總數,task 任務數...

spark調優,調節並行度

spark並行度指的是什麼?並行度 其實就是指的是,spark作業中,各個stage的task數量,也就代表了sprark作業的各個階段 stage 的並行度。如果不調節,那麼導致並行度過低,會怎麼樣?假設,現在已經在spark submit指令碼中給我們的spark作業分配了足夠的資源,比如50個...