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 編寫...