zun*_*ior 9 scala fold apache-spark spark-streaming rdd
在Spark的RDD和DStream中,我们使用'reduce'函数将整个RDD转换为一个元素.但是reduce函数需要(T,T)=> T但是如果我们想要减少Scala中的List,我们可以使用foldLeft或foldRight,它采用类型(B)((B,A)=> B)这非常有用,因为你开始使用列表中的其他类型进行折叠.
Spark中有没有办法做类似的事情?我可以从一个不同类型的值开始,然后是RDD本身的元素
使用聚合而不是reduce.它还允许您指定类型B的"零"值和类似于您想要的函数:(B,A)=> B.请注意,您还需要合并在单独的执行程序上完成的单独聚合,因此a( B,B)=> B功能也是必需的.
或者,如果您希望此聚合作为副作用,则选项是使用累加器.特别是,可累积类型允许结果类型与累积类型不同.
此外,如果您甚至需要对键值RDD执行相同操作,请使用aggregateByKey.
| 归档时间: |
|
| 查看次数: |
5563 次 |
| 最近记录: |