在火花中,如何将我的RDD折叠成对?

时间:2018-07-05 11:51:29

标签: scala apache-spark rdd

假设我有一个如下所示的整数的RDD:

(1,2,3,4,5,6,7,8)

(即RDD中有八个项目)

我想将RDD折叠成对,所以看起来像这样:

((1,2),(3,4),(5,6),(7,8)

(即,RDD中有四个项目)。

我认为可能有一个分区或聚合函数,但似乎没有。

我的问题是:在火花中,如何将RDD折叠成对?

1 个答案:

答案 0 :(得分:1)

这正是sliding库中可用的mllib函数

// Import the mllib library
scala> import org.apache.spark.mllib.rdd.RDDFunctions._
import org.apache.spark.mllib.rdd.RDDFunctions._

scala> val rdd = spark.sparkContext.parallelize(Seq(1,2,3,4,5,6,7,8))
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[10] at parallelize at 
 <console>:29

scala> rdd.sliding(2,2).map(x => (x(0), x(1))).foreach(println)
(1,2)
(5,6)
(3,4)
(7,8)

或更佳

rdd.sliding(2,2).map{case Array(x,y) => (x,y) }.foreach(println)

希望这对您有帮助!