我正在嘗試在已分組的集合中執行簡單聚合。就像這樣:如何將mapValues轉換爲Scala中的並行集合
case class Foo(key:String, value:Int)
val minPerKey = lotsOfFoos.groupBy(_.key).mapValues(_.minBy(_.value))
現在我想要做相同的平行但ParMap沒有mapValues功能。
這是爲什麼,我應該怎麼做呢?
我正在嘗試在已分組的集合中執行簡單聚合。就像這樣:如何將mapValues轉換爲Scala中的並行集合
case class Foo(key:String, value:Int)
val minPerKey = lotsOfFoos.groupBy(_.key).mapValues(_.minBy(_.value))
現在我想要做相同的平行但ParMap沒有mapValues功能。
這是爲什麼,我應該怎麼做呢?
Scala 2.10具有ParMap的mapValues。
但是,使用ParMap的mapValues沒有太多好處。 mapValues方法只是爲您提供了一個新的Map,它在讀取值時應用您的函數,但實際上並沒有改變Map中的值。因此,您需要執行一些其他操作,以強制創建具有映射值的新映射。
由於mapValues上不存在ParMapLike,有兩種選擇離開:
.map{case (key, value) => (key->value.minBy(_.value)) }
.toMap.mapValues(_.minBy(_.value))
我不知道爲什麼mapValues不是在ParMap上實現的像
我會使用'.seq'而不是'.toMap',因爲它具有更好的記錄意圖。 –