我是Scala的新手,我试图在spark中解决这个问题,它也使用Scala在RDD上执行操作.
到目前为止,我只看到只有一个初始值的聚合函数(i,e some-input.aggregate(Initial-value)((acc,value)=>(acc+value))),但是这个程序有两个初始值(0,0).
根据我的理解,该程序用于计算运行平均值并记录到目前为止的计数.
val result = input.aggregate((0, 0))(
(acc, value) => (acc._1 + value, acc._2 + 1),
(acc1, acc2) => (acc1._1 + acc2._1, acc1._2 + acc2._2))
val avg = result._1 / result._2.toDouble
Run Code Online (Sandbox Code Playgroud)
我知道在foldLeft/ aggregate我们提供初始值,因此在空集合的情况下,我们得到默认值,并且都有累加器和值部分.
但在这种情况下,我们有两个初始值,累加器正在访问元组值.这个元组在哪里定义?
有人可以逐行解释整个程序.