0
例は非常にエレガントです:リフト地図
scala> Map(1 -> Max(2)) + Map(1 -> Max(3)) + Map(2 -> Max(4))
res0: Map[Int,Max[Int]] = Map(2 -> Max(4), 1 -> Max(3))
は基本的に、ここで地図の使用は、SQLのgroup by
と同等です。
しかし、私は任意のアグリゲータでこれをどうやって行うのですか?例えば、上記の(しかしMax
ラッパークラスなし)コードと同じことを達成するために
scala> import com.twitter.algebird._
scala> val mx = Aggregator.max[Int]
mx: Aggregator[Int,Int,Int] = MaxAggregator([email protected])
scala> val mxOfMap = // what goes here?
mxOfMap: Aggregator[Map[Int,Int],Map[Int,Int],Map[Int,Int]] = ...
scala> mxOfMap.reduce(List(Map(1 -> 2), Map(1 -> 3), Map(2 -> 4)))
res0: Map[Int,Int] = Map(2 -> 4, 1 -> 3)
言い換えれば、どのようにIは、変換(または「リフト」)型の値で動作するアグリゲータ(任意のK
の場合)の値で動作するアグリゲータに、T
を挿入しますか?