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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

RDD 可视化 —— RDDOperationScope.withScope

發布時間:2024/10/8 编程问答 29 如意码农
生活随笔 收集整理的這篇文章主要介紹了 RDD 可视化 —— RDDOperationScope.withScope 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在看各種博客,學習 spark 源代碼。

網上對源代碼的分析基本都是基于 0.7, 0.8, 1.0 的代碼,而現在的發行版已經是 1.5 了。所以有些代碼不大對的上。比如函數 RDD.map()

舊版本是:

def mapU: ClassTag: RDD[U] = new MappedRDD(this, sc.clean(f))

1.5 版本是:

def map[U: ClassTag](f: T => U): RDD[U] = withScope {
val cleanF = sc.clean(f)
new MapPartitionsRDD[U, T](this, (context, pid, iter) => iter.map(cleanF))
}

而且所有 RDD 的轉化方法都調用了 RDDOperationScope.withScope,于是我就很好奇這個函數有什么作用。

它首先是根據堆棧信息(Thread.currentThread.getStackTrace)找出調用者的名字,比如 map, textFile, reduceByKey 等等,然后在 SparkContext 的屬性 "spark.rdd.scope" 中新建了一個屬性 RDDOperationScope(name: String, parent: RDDOperationScope),用來記錄當前的運行 RDD 信息。其中 parent 可以用來追溯到所有 RDD 操作信息,即 RDDOperationScope。

這又啥用?于是我 git blame 了一下,找到了代碼的提交哈希值為 fc8b5819,再 git show,于是有了詳細的介紹,第一行是

[SPARK-] [SPARK-] DAG visualization on SparkUI

原來是用來做 DAG 的可視化。再找到這個 SPARK-6943,有非常詳細的動機描述:現有的 Spark UI 中只有 stage 的執行情況,而 stage 與用戶代碼中 rdd 的聯系不夠直接,如果代碼復雜,很難根據 UI 信息了解到代碼的執行情況,于是想強化 UI 中的 RDD 可視化功能,所以把所有創建 RDD 的方法包裹起來,使用 RDDOperationScope 記錄 RDD 的操作歷史和關聯,就能達成目標。

總結

以上是生活随笔為你收集整理的RDD 可视化 —— RDDOperationScope.withScope的全部內容,希望文章能夠幫你解決所遇到的問題。

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