(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放入到...