日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark _08窄依赖和宽依赖stage

發布時間:2024/2/28 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark _08窄依赖和宽依赖stage 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

專業術語:

窄依賴和寬依賴

RDD之間有一系列的依賴關系,依賴關系又分為窄依賴和寬依賴。

  • 窄依賴

父RDD和子RDD partition之間的關系是一對一的?;蛘吒窻DD一個partition只對應一個子RDD的partition情況下的父RDD和子RDD partition關系是多對一的。不會有shuffle的產生。

  • 寬依賴

父RDD與子RDD partition之間的關系是一對多。會有shuffle的產生。

寬窄依賴圖理解

Stage

Spark任務會根據RDD之間的依賴關系,形成一個DAG有向無環圖,DAG會提交給DAGScheduler,DAGScheduler會把DAG劃分相互依賴的多個stage,劃分stage的依據就是RDD之間的寬窄依賴。遇到寬依賴就劃分stage,每個stage包含一個或多個task任務。然后將這些task以taskSet的形式提交給TaskScheduler運行。

?????stage是由一組并行的task組成。

  • stage切割規則

切割規則:從后往前,遇到寬依賴就切割stage。

?

  • stage計算模式

pipeline管道計算模式,pipeline只是一種計算思想,模式。

?

  • 數據一直在管道里面什么時候數據會落地?
  • 對RDD進行持久化。
  • shuffle write的時候。
    • Stage的task并行度是由stage的最后一個RDD的分區數來決定的 。
    • 如何改變RDD的分區數?

    例如:reduceByKey(XXX,3),GroupByKey(4)

    • 測試驗證pipeline計算模式
    val conf = new SparkConf()conf.setMaster("local").setAppName("pipeline");val sc = new SparkContext(conf)val rdd = sc.parallelize(Array(1,2,3,4))val rdd1 = rdd.map { x => {println("map--------"+x)x}}val rdd2 = rdd1.filter { x => {println("fliter********"+x)true} }rdd2.collect()sc.stop() package SparkRadioimport org.apache.spark.{SparkConf, SparkContext}/*** 驗證pipeline*/ object PipelineDemo {def main(args: Array[String]): Unit = {val conf = new SparkConf().setMaster("local").setAppName("pip")val sc = new SparkContext(conf)sc.setLogLevel("error")val rdd1 = sc.textFile("./data/words.txt")val rdd2 = rdd1.map(x => {println("*** map ***" + x)x + "~"})val rdd3 = rdd2.filter(one => {println("=== filter ===" + one)true})rdd3.count()} }

    ?

    總結

    以上是生活随笔為你收集整理的Spark _08窄依赖和宽依赖stage的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。