1

グループ化したコレクションで単純な集計を実行しようとしています。このような:

case class Foo(key:String, value:Int)
val minPerKey = lotsOfFoos.groupBy(_.key).mapValues(_.minBy(_.value))

同じことを並行して行いたいのですが、ParMap には mapValues 関数がありません。

これはなぜですか? また、代わりにどのようにすればよいですか?

4

2 に答える 2

3

Scala 2.10 には、ParMap の mapValues があります。

しかし、ParMap で mapValues を使用するメリットはあまりありません。mapValues メソッドは、値を読み取るときに関数を適用する新しいマップを提供するだけで、実際にはマップ内の値を変更しません。したがって、マップされた値を使用して新しいマップを強制的に作成する他のアクションを実行する必要があります。

于 2013-01-24T20:48:53.520 に答える
1

mapValues は ParMapLike には存在しないため、2 つのオプションが残っています。

  1. マップを使用するだけです:.map{case (key, value) => (key->value.minBy(_.value)) }
  2. パラレル ユニバースから抜け出す:.toMap.mapValues(_.minBy(_.value))

mapValues が ParMapLike に実装されていない理由がわかりません

于 2013-01-24T20:35:27.887 に答える