1
我使用apache-spark和scala通過參數聚合值如下。 這不斷增加值到「列表」 是否有更有效的方式來獲得關鍵和StatCounter列表?通過鍵和StatCounter進行高效的分組
val predictorRawKey = predictorRaw.map { x =>
val param = x._1
val val: Double = x._2.toDouble
(param, val)
}.mapValues(num => List(num))
.reduceByKey((l1, l2) => l1 ::: l2)
.map { x => x._1, StatCounter(x._2.iterator))
哦,我真的很感激! – joshsuihn
我認爲reduceByKey在內部已經具有像(acc,x)=> acc.merge(x)這樣的操作。您能否簡單介紹一下reduceByKey和aggregateByKey之間的區別。通常,我們可以說aggregateByKey更高效(如果它穩定且快速,我會說「高效」)謝謝! – joshsuihn
這完全是關於類型。 'pairs'爲'RDD [(T,Double)]',predictorRawKey爲'RDD [(T,StatCounter)]'。由於類型不匹配,因此不能使用'reduceByKey'。你可以把''pairs'映射到'RDD [(T,StatCounter)]'和'reduceByKey',但是沒有理由創建大量的臨時對象。 – zero323