在 Spark 的 RDD 和 DStream 中,我们有“reduce”函数,用于将整个 RDD 转换为一个元素。然而,reduce 函数采用 (T,T) => T
然而,如果我们想减少Scala中的列表,我们可以使用foldLeft或foldRight,它采用类型(B)((B,A) => B),这非常有用,因为你开始折叠时使用的类型不同于列表中的类型。
Spark 有没有办法做类似的事情?我可以从一个与 RDD 本身不同类型的值开始
Use 总计的而不是减少。它还允许您指定 B 类型的“零”值和您想要的函数:(B,A) => B。请注意,您还需要合并在单独执行器上完成的单独聚合,因此 ( B, B) => 还需要 B 功能。
或者,如果您希望这种聚合作为副作用,可以选择使用累加器。特别是,累积型允许结果类型与累积类型不同。
另外,如果您甚至需要对键值 RDD 执行相同的操作,请使用按键聚合.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)