如果我有一个数据集与此类似:对RDD转换
val list = List ((1,1), (1,2), (1,3), (2,2), (2,1), (3,1), (3,3))
而且我想找到每个键的平均所以输出应该是:
(1, 2), (2, 3/2), (3, 2)
我能做到这一点使用groupByKey, countByKey, and reduceByKey
莫名其妙或我必须使用类似于下面的示例combineByKey方法:我尝试使用groupByKey, countByKey, and reduceByKey
但这种方法的组合不起作用,我想知道是否有人知道使用这三种方法做到这一点?
val result = input.combineByKey(
(v) => (v, 1),
(acc: (Int, Int), v) => (acc._1 + v, acc._2 + 1),
(acc1: (Int, Int), acc2: (Int, Int)) => (acc1._1 + acc2._1, acc1._2 + acc2._2)).
map{ case (key, value) => (key, value._1/value._2.toFloat) }
result.collectAsMap().map(println(_))
哦,对了,我忘当你groupByKey它把值在数组中,所以你可以使用之和大小在该阵列上!感谢您的帮助! – CapturedTree