我要計算一個RDD相鄰的兩個數字的總和,我的快速和骯髒的方法是先創建一個數組,然後讓兩個相鄰的數之和,但就是這樣醜陋和低效,如何用spark/scala計算RDD中兩個相鄰數字的總和?
val rdd = sc.parallelize(1 to 9)
val sumNum:RDD[Int] =rdd.mapPartitions((parIter=>{
var sum=new ArrayBuffer[Int]()
var result=new ArrayBuffer[Int]()
while (parIter.hasNext) {
result.append(parIter.next())
}
for(i<-0 until result.length-1){
sum.append(result(i)+result(i+1))
}
sum.toIterator
}))
sumNum.collect().foreach(println)
總之,有更好的解決方案嗎? 謝謝!
請分享示例數據和預期輸出。 – mtoto
rdd是sc.parallelize(1到9)並且期望的輸出是總和RDD [Int] = RDD(3,5,7,9,11,13,15,17) – mentongwu
可以將它編輯成問題嗎? – mtoto