Spark (4) Actions (下)

1. takeSample:

對 RDD 進行抽樣,可以選擇抽樣出來的元素是否重複。

takeSample(withReplacement, num, [seed])
val a = sc.parallelize(1 to 10)
a.takeSample(true, 3)
a.takeSample(false, 3)

2. reduce:

將函式迭代兩相同型別的元素進行運算。

a.reduce((x,y)=> x+y)
res0: Int = 55

3. fold:

類似 reduce 需要給定一個基值。

a.fold(0)((x,y)=>x+y)
res1: Int = 55

a.fold(5)((x,y)=>x+y)
res2: Int = 100

4. map-reduce 的方法計算平均值:

val a = sc.parallelize(1 to 10)
val b = a.map((_, 1))
val c = b.reduce((x, y)=>(x._1+y._1, x._2+y._2))
val mean = (c._1.toFloat)/c._2

5. aggregate 計算平均值:

跟 map-reduce 類似但比較精簡的寫法。

val res = a.aggregate((0,0))(
 (acc, value)=> (acc._1+value, acc._2+1), // map
 (x, y)=> (x._1+y._1, x._2+y._2) // reduce
)
val mean = res._1/res._2.toFloat

留言

熱門文章