我想对随机的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)。
答案 0 :(得分:0)
您可以在地图步骤中执行操作,然后使用flatMap删除配对。
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