您好,我想在火花流中创建一个迭代算法,在该算法中,我将元素合并在一起,然后删除其中的一些元素并重复此操作,直到我拥有原始输入的一个元素为止
所以我一直在想我想要像这样的东西。但是,我应该如何重复它,直到将原始输入多次汇总为一个元素(Array
)。输入是一对(key,value)
,其中key是整数,值是Array[Double]
val summary = input.mapValues(p=>{
//convert each element into an array to merge those with same keys
var point = new Array[Double](0)
point:+p
point
}).reduceByKey{ case (x,y) => x++y }
//merge arrays with same key
.map(bkt => makeSummary(bkt,size))
//makeSummary reduces an array
.reduceByKey{case (x,y) => x++y}
//merge same keys again
.map(bkt => makeSummary(bkt,size))
//repeat until only one element left