spark的邏輯處理流程主要分為四個部分:
rdd是如何生成的?
spark對程式中的每乙個資料進行操作,比如transformation操作(map)就會生成新的rdd,對於複雜的操作(join)則會生成多個rdd
新的rdd分割槽數量是如何得到的?
使用者和parent rdd兩者共同決定新的rdd分割槽數量,比如使用者可以通過repartion()和coalesce()決定新的rdd分割槽的個數;如果使用者沒有決定rdd的個數,那麼新的rdd的個數由parent rdd分割槽個數的最大值決定
新的rdd和parent rdd之間的依賴關係有哪些?
根據新的rdd是否完全依賴parent rdd的乙個或者多個分割槽可以定義新的rdd和parent rdd之間是寬依賴還是窄依賴。寬依賴關心僅僅依賴parent rdd分割槽中的某個部分而非全部,而窄依賴則依賴parent rdd分割槽中的整個部分。
為什麼要劃分rdd之間的依賴關係?
spark會根據依賴關係把乙個作業job劃分為多個階段stage,對於寬依賴和窄依賴而言,窄依賴對於作業的優化很有利,如果連續的變換操作序列都是窄依賴,就可以把很多個 fork/join 合併為乙個,通過這種合併,不但減少了大量的全域性路障(barrier),而且無需儲存很多中間結果rdd,這樣可以極大地提公升效能。
spark的三種分割槽方法
常用的資料操作
transformation和action
Spark學習之路
概念 spark可以分為1個driver和若干個executor,通過sparkcontext連線spark集群 建立rdd 累加器 廣播變數,簡單可以認為sparkcontext是spark程式的根本 driver會把計算任務分成一系列小的task,然後送到executor執行,executor之...
Spark學習之路 官方文件 簡單
英文原文 中文文件 1.1 rdd programming guide 英文原文 中文文件 1.2 spark sql,dataframes and datasets guide 英文原文 中文文件 看完官方的技術文件實踐後,自己可以試著實現spark的三種執行方式 spark2.1.1中用各種模式...
Spark學習筆記(二)
部署圖 從部署圖中可以看到 bin run example sparkpi 10 那麼 sparkpi 就是 master 上的driver。如果是 yarn 集群,那麼 driver 可能被排程到 worker 節點上執行 比如上 圖中的 worker node 2 在standalone版本中,...