我正在尝试了解treeAggregate,但在线上没有足够的示例。
以下代码是否合并了分区的元素,然后调用makeSummary并并行地对每个分区执行相同的操作(对结果求和并再次汇总),然后将深度设置为(可以说)5,重复5次?
我想从这些结果中得到的结果是汇总数组,直到得到其中之一为止。
val summary = input.transform(rdd=>{
rdd.treeAggregate(initialSet)(addToSet,mergePartitionSets,5)
// this returns Array[Double] not rdd but still
})
val initialSet = Array.empty[Double]
def addToSet = (s: Array[Double], v: (Int,Array[Double])) => {
val p=s ++ v._2
val ret = makeSummary(p,10000)
ret
}
val mergePartitionSets = (p1: Array[Double], p2: Array[Double]) => {
val p = p1 ++ p2
val ret = makeSummary(p,10000)
ret
}
//makeSummary selects half of the points of p randomly