如何减少 Scala 中的紧凑型缓冲区?

How to reduce a compact buffer in scala?

这是我的 RDD:

scala> grouped_final_resultMap.first
res20: (String, Iterable[Float]) = (2014-02-01,CompactBuffer(239.96, 129.99, 49.98, 100.0, 399.98))

我想要做的是总结该 RDD 的 _2-nd 组件中 Iterable[Float] 中的所有项目。

谁能告诉我该怎么做?

非常感谢。


更新:

这是回复会话:

scala> final_result.take(20).foreach(println)
2828,2013-08-10,129.99
43399,2014-04-20,100.0
43399,2014-04-20,129.99
43399,2014-04-20,49.98
8989,2013-09-19,119.97

...

scala> val final_resultMap1 = final_result.map(x=>(x.split(",")(1), x.split(",")(2).toFloat))
scala> grouped_final_resultMap1.first
res34: (String, Iterable[Float]) = (2014-02-01,CompactBuffer(239.96, 129.99, ...

val sumed = final_resultMap1.map{case (str, nums) => (str, nums.sum)}

如果报错如下:

<console>:41: error: value sum is not a member of Float
   val sumed = final_resultMap1.map{case (str, nums) => (str, nums.sum)}

谢谢。

因为CompactBuffer extends Iterable, and Iterable有一个方法sum,它应该很简单:

grouped_final_resultMap.map{ 
  case (str, nums) => (str, nums.sum) 
}

但是,请确保您没有错过在前面的某个步骤中执行此关联归约操作的机会。


从您的编辑中可以看出,您根本不想对 grouped_final_resultMap1 做任何事情,而是想要

final_resultMap1.reduceByKey((_: Float) + (_: Float))

或者只是

final_resultMap1.reduceByKey(_ + _) 

简称。