Scala 火花中的foldLeft或foldRight等效物?

Scala 火花中的foldLeft或foldRight等效物?,scala,apache-spark,spark-streaming,fold,rdd,Scala,Apache Spark,Spark Streaming,Fold,Rdd,在Spark的RDD和数据流中,我们有一个“reduce”函数,用于将整个RDD转换为一个元素。然而,reduce函数采用(T,T)=>T 然而,如果我们想减少Scala中的列表,我们可以使用foldLeft或foldRight,它采用类型(B)((B,a)=>B)这是非常有用的,因为开始折叠时使用的类型不是列表中的类型 Spark中有没有类似的方法?我可以从不同类型的值开始,然后RDD本身中的元素使用而不是reduce。它还允许您指定类型为B的“零”值和所需的函数:(B,a)=>B。请注意,您

在Spark的RDD和数据流中,我们有一个“reduce”函数,用于将整个RDD转换为一个元素。然而,reduce函数采用(T,T)=>T 然而,如果我们想减少Scala中的列表,我们可以使用foldLeft或foldRight,它采用类型(B)((B,a)=>B)这是非常有用的,因为开始折叠时使用的类型不是列表中的类型

Spark中有没有类似的方法?我可以从不同类型的值开始,然后RDD本身中的元素使用而不是reduce。它还允许您指定类型为B的“零”值和所需的函数:(B,a)=>B。请注意,您还需要合并在单独执行器上完成的单独聚合,因此还需要一个(B,B)=>B函数

或者,如果希望将此聚合作为副作用,可以选择使用累加器。特别是,允许结果类型为与累积类型不同的类型


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

注意,我更新了下面的答案。因为我看你是新来的,所以如果答案能解决你的问题,就一定要“接受”它,以帮助别人寻找未回答的问题。谢谢数据流呢?在那里,我们没有“聚合”函数使用
transform
在底层RDD下进行操作。数据流基本上是一系列RDD。