如何对随机的RDD元素对执行操作?

问题描述 投票:1回答:1

我想对随机的RDD元素对执行操作,以使较大的数字取1并将其加到较小的数字。

例如,将其作为我们的随机对:(23,-52),(3,2),(5,-2),(29,0)。在此对上执行给定的操作后,我们得到如下的RDD:(22,2,3,-51,-1,4,28,1)

另一个例子:(3,23,-2,5,0,2,-52,29)

如何解决此问题?


输入RDD是这个(3,23,-2,5,0,2,-52,29)。我必须对此RDD-s元素的随机组合执行给定的操作。此RDD-s元素的以下组合的示例:(23,-52),(3,2),(5,-2),(29,0)或以下组合:(2,-52),(29 ,-2),(0,5),(23,3)。

apache-spark rdd
1个回答
0
投票
val rdd = sc.parallelize(Seq((23,-52),(3,2),(5,-2),(29,0))) val rdd2 = rdd.map(s => s._1 > s._2 match { case true => (s._1 - 1, s._2 + 1) case false => (s._1 + 1, s._2 - 1) } ).flatMap(s => Seq(s._1, s._2)) println(rdd2.collect().mkString(" "))

输出:2 3 22 4 -1 -51 28 1

© www.soinside.com 2019 - 2024. All rights reserved.