spark多階段任務

2021-10-06 02:29:45 字數 1469 閱讀 9607

import org.apache.spark.rdd.rdd

val lines: rdd[string] = sc.parallelize(list("a b c","a b d"),3)

//切分壓平

val words: rdd[string] = lines.flatmap(_.split(" "))

//將單詞和1組合

val wordandone: rdd[(string, int)] = words.map((_, 1))

val reduced: rdd[(string, int)] = wordandone.reducebykey((x, y) => )

//排序

val sorted: rdd[(string, int)] = reduced.sortby(_._1, true)

// val sorted: rdd[(string, int)] = reduced.sortbykey(true)

val array = sorted.collect();

驚訝發現執行sortby就開始工作了,所以sortby也是action

先看第乙個job 即job-0,sortbykey觸發的

job-0分成兩個階段,由於reducebykey寬依賴來劃分的(是否寬依賴都會shuffle?),階段一用時2s,shuffle 寫入,階段二0.2s,shuffle讀,階段1執行完才會執行階段2

executor上的task time是所執行task的總和,不代表executor的實際執行時間 

各階段總耗時在下圖可以看到

第二個job 及collect action

由於第乙個階段,在前乙個job執行時階段結果已經write到磁碟中,所以直接跳過,初始rdd時給了三個分片,後續沒有做重分割槽,所以每個階段都是三個分片,對應三個任務

NGINX多階段處理

nginx實際把請求處理流程劃分為了11個階段,這樣劃分的原因是將請求的執行邏輯細分,各階段按照處理時機定義了清晰的執行語義,開發者可以很容易分辨自己需要開發的模組應該定義在什麼階段,下面介紹一下各階段 接收完請求頭之後的第乙個階段,它位於uri重寫之前,實際上很少有模組會註冊在該階段,預設的情況下...

Dockerfile多階段構建

多階段構建 之前的做法 在docker17.05版本之前,構建docker映象,通常採用兩種方式 1.全部放入乙個dockerfile 一種方式是將所有的構建過程全都包含在乙個dockerfile中,包括專案及其依賴庫的編譯 測試 打包流程,這裡會帶來的一些問題 映象層次多,映象體積較大,部署時間變...

Docker多階段構建

在 docker 17.05 版本之前,我們構建 docker 映象時,通常會採用兩種方式 一種方式是將所有的構建過程編包含在乙個 dockerfile 中,包括專案及其依賴庫的編譯 測試 打包等流程,這裡可能會帶來的一些問題 package main import fmt func main 編寫...