gpt4 book ai didi

scala - foldLeft或foldRight等价于Spark吗?

转载 作者:行者123 更新时间:2023-12-04 04:04:43 26 4
gpt4 key购买 nike

在Spark的RDD和DStream中,我们具有“减少”功能,用于将整个RDD转换为一个元素。但是减少函数取(T,T)=> T
但是,如果要减少Scala中的列表,我们可以使用foldLeft或foldRight,它们接受类型(B)((B,A)=> B),这非常有用,因为您可以使用列表中其他类型以外的类型开始折叠。

Spark中有没有办法做类似的事情?我可以从一个与RDD本身中的元素不同类型的值开始

最佳答案

使用aggregate而不是reduce。它也允许您指定类型B的“零”值和类似您想要的函数:(B,A)=>B。请注意,您还需要合并在单独的执行程序上完成的单独的聚合,因此( B,B)=> B功能也是必需的。

或者,如果您希望这种聚合产生副作用,则可以选择使用累加器。特别是,accumulable type允许结果类型与累积类型不同。

另外,如果您甚至需要对键值RDD进行相同操作,请使用aggregateByKey

关于scala - foldLeft或foldRight等价于Spark吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31813973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com