六 Spark原始碼理解之RDD part1

2021-06-29 07:03:25 字數 959 閱讀 3183

(3)針對分割槽的計算函式

接下來講講rdd的各種函式操作,正是有了這些函式才使得rdd能完成各自功能

3.1.轉換

3.1.1 map

valdisdata=sc.parallelize(array(1,2,3,4,5),2)

vald=disdata.map(s=>s+2)

結果:d=3,4,5,6,7

map()

函式的得到的新的

rdd的分割槽資訊和父

rdd一致

3.1.2 flatmap

如: valdisdata=sc.parallelize(array(1,2,3),2)

vald1=disdata.map(s=>1to s).collect

vald2=disdata.flatmap(s=>1to s).collect

結果:d1

會出錯,因為

map是一對一的操作;

d2=array(1,1,2,1,2,3)

此外,下面這個例子也能說明map和flatmap的不同,不過一般在spark中不會經常體現出 如:

valxs = map("a" ->list(11,111), "b" ->list(22,222)

vald1=xs.map(_._2)

vald2=xs.flatmap(_._2)

結果:d1=list(list(11,111),list(22,222));d2=list(11,111,22,222);

flatmap()

函式的得到的新的

rdd的分割槽資訊和父

rdd一致

未完待續。。。。

spark原始碼剖析 RDD相關原始碼閱讀筆記

最好的原始碼閱讀方法就是除錯,沒有之一 之前其實有閱讀過rdd相關的原始碼,最近學習過程中發現在之前原本閱讀過的模組中有一些 關節 並沒有打通,所以想通過除錯的方式來更細緻得學習原始碼。本文為編寫測試用例並除錯rdd相關模組的筆記,並沒有列出具體的除錯過程,僅列出結論以做備忘,特別是那些比較容易忽略...

Spark(六) RDD快取機制

舉例 scala var rdd1 sc.textfile hdfs bigdata111 8020 tmp files test cache.txt rdd1 org.apache.spark.rdd.rdd string hdfs bigdata111 8020 1 at textfile at...

spark原始碼之TaskScheduler解讀

1 spark任務的真正的執行時由action運算元進行乙個觸發,最終呼叫sc.runjob方法,在driver端會初始化2個重要的組建dagscheduler和taskscheduler,a taskscheduler的主要職責 a.1負責將dagscheduler傳送過來的的taskset放入到...